Java socket字节流传输示例解析
本文为大家分享了Javasocket字节流传输示例,供大家参考,具体内容如下
服务端server端:
packagecom.yuan.socket;
importjava.io.*;
importjava.net.ServerSocket;
importjava.net.Socket;
/**
*CreatedbyYUANon2016-09-17.
*/
publicclassTalkServer4Byte{
privateServerSocketserver;
privateintport=5020;
publicTalkServer4Byte(){
try{
server=newServerSocket(port);
}catch(IOExceptione){
}
}
publicvoidtalk(){
System.out.println("监控端口:"+port);
Socketsocket=null;
while(true){
try{
//阻塞等待,每接收到一个请求就创建一个新的连接实例
socket=server.accept();
System.out.println("连接客户端地址:"+socket.getRemoteSocketAddress());
//装饰流BufferedReader封装输入流(接收客户端的流)
BufferedInputStreambis=newBufferedInputStream(
socket.getInputStream());
DataInputStreamdis=newDataInputStream(bis);
byte[]bytes=newbyte[1];//一次读取一个byte
Stringret="";
while(dis.read(bytes)!=-1){
ret+=bytesToHexString(bytes)+"";
if(dis.available()==0){//一个请求
doSomething(ret);
}
}
}catch(IOExceptione){
System.out.println(e.getMessage());
}finally{
try{
socket.close();
}catch(IOExceptione){
System.out.println(e.getMessage());
}
}
}
}
publicstaticvoiddoSomething(Stringret){
System.out.println(ret);
}
publicstaticStringbytesToHexString(byte[]src){
StringBuilderstringBuilder=newStringBuilder("");
if(src==null||src.length<=0){
returnnull;
}
for(inti=0;i<src.length;i++){
intv=src[i]&0xFF;
Stringhv=Integer.toHexString(v);
if(hv.length()<2){
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
returnstringBuilder.toString();
}
publicstaticStringBytesHexString(byte[]b){
Stringret="";
for(inti=0;i<b.length;i++){
Stringhex=Integer.toHexString(b[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
ret+=hex.toUpperCase();
}
returnret;
}
publicstaticvoidmain(String[]args){
TalkServer4Byteserver=newTalkServer4Byte();
server.talk();
}
}
客户端client代码:
packagecom.yuan.socket;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.InetSocketAddress;
importjava.net.Socket;
importjava.net.SocketAddress;
/**
*CreatedbyYUANon2016-09-17.
*/
publicclassTalkClient4Byte{
privateSocketsocket;
privateSocketAddressaddress;
publicTalkClient4Byte(){
try{
socket=newSocket();
address=newInetSocketAddress("127.0.0.1",5020);
socket.connect(address,1000);
}catch(IOExceptione){
e.printStackTrace();
}
}
publicvoidtalk(){
try{
//使用DataInputStream封装输入流
InputStreamos=newDataInputStream(System.in);
byte[]b=newbyte[1];
DataOutputStreamdos=newDataOutputStream(socket.getOutputStream());
while(-1!=os.read(b)){
dos.write(b);//发送给客户端
}
dos.flush();
dos.close();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
socket.close();
}catch(IOExceptione){
}
}
}
publicstaticvoidmain(String[]args){
TalkClient4Byteclient=newTalkClient4Byte();
client.talk();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。