Java网络通信基础编程(必看篇)
方式一:同步阻塞方式(BIO):
服务器端(Server):
packagecom.ietree.basicskill.socket.mode1; importjava.io.IOException; importjava.net.ServerSocket; importjava.net.Socket; /** *服务端 */ publicclassServer{ //端口号 finalstaticintPORT=8765; publicstaticvoidmain(String[]args){ ServerSocketserver=null; try{ server=newServerSocket(PORT); System.out.println("Serverstart......"); //进行阻塞 Socketsocket=server.accept(); //创建一个程序执行客户端的任务 newThread(newServerHandler(socket)).start(); }catch(IOExceptione){ e.printStackTrace(); }finally{ if(server!=null){ try{ server.close(); }catch(IOExceptione){ e.printStackTrace(); } } server=null; } } }
采用多线程来处理接收到的请求(ServerHandler):
packagecom.ietree.basicskill.socket.mode1; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; importjava.io.PrintWriter; importjava.net.Socket; publicclassServerHandlerimplementsRunnable{ privateSocketsocket; publicServerHandler(Socketsocket){ this.socket=socket; } @Override publicvoidrun(){ BufferedReaderin=null; PrintWriterout=null; try{ in=newBufferedReader(newInputStreamReader(this.socket.getInputStream())); out=newPrintWriter(this.socket.getOutputStream(),true); Stringbody=null; while(true){ body=in.readLine(); if(body==null){ break; } System.out.println("Server:"+body); out.println("服务器端回送响应的数据。"); } }catch(Exceptione){ e.printStackTrace(); }finally{ if(in!=null){ try{ in.close(); }catch(IOExceptione){ e.printStackTrace(); } } if(out!=null){ try{ out.close(); }catch(Exceptione){ e.printStackTrace(); } } if(socket!=null){ try{ socket.close(); }catch(IOExceptione){ e.printStackTrace(); } } socket=null; } } }
客户端(Client):
packagecom.ietree.basicskill.socket.mode1; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; importjava.io.PrintWriter; importjava.net.Socket; /** *客户端 */ publicclassClient{ finalstaticStringADDRESS="127.0.0.1"; finalstaticintPORT=8765; publicstaticvoidmain(String[]args){ Socketsocket=null; BufferedReaderin=null; PrintWriterout=null; try{ socket=newSocket(ADDRESS,PORT); in=newBufferedReader(newInputStreamReader(socket.getInputStream())); out=newPrintWriter(socket.getOutputStream(),true); //向服务器端发送数据 out.println("接收到客户端的请求数据......"); Stringresponse=in.readLine(); System.out.println("Client:"+response); }catch(Exceptione){ e.printStackTrace(); }finally{ if(in!=null){ try{ in.close(); }catch(IOExceptione){ e.printStackTrace(); } } if(out!=null){ try{ out.close(); }catch(Exceptione){ e.printStackTrace(); } } if(socket!=null){ try{ socket.close(); }catch(IOExceptione){ e.printStackTrace(); } } socket=null; } } }
程序输出:
Server:
Serverstart...... Server:接收到客户端的请求数据......
Client:
Client:服务器端回送响应的数据。
同步非阻塞(NIO)
异步非阻塞(AIO)
以上这篇Java网络通信基础编程(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。