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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。