介绍
利用Java怎么样实现网络通信功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
<强>服务器端(服务器):强>
包com.ietree.basicskill.socket.mode1; 进口java.io.IOException; 进口java.net.ServerSocket; 进口java.net.Socket;/* * * 服务端 */公共类服务器{//端口号 最终的静态int端口=8765; 公共静态void main (String [] args) { 考察一下服务器=零; 尝试{ 服务器=考察(港口); System.out.println(“服务器启动……“);//进行阻塞 Socket套接字=server.accept ();//创建一个程序执行客户端的任务 新线程(新ServerHandler(插座)).start (); }捕捉(IOException e) { e.printStackTrace (); 最后}{ 如果(服务器!=null) { 尝试{ server.close (); }捕捉(IOException e) { e.printStackTrace (); } } 服务器=零; } } }
采用多线程来处理接收到的请求(ServerHandler):
包com.ietree.basicskill.socket.mode1; 进口java.io.BufferedReader; 进口java.io.IOException; 进口java.io.InputStreamReader; 进口java.io.PrintWriter; 进口java.net.Socket; 公共类ServerHandler实现Runnable { 私人Socket套接字; 公共ServerHandler (Socket套接字){ 这一点。套接字=套接字; } @Override 公共空间run () { BufferedReader=零; PrintWriter=零; 尝试{ 在=new BufferedReader(新InputStreamReader (this.socket.getInputStream ()));=new PrintWriter (this.socket.getOutputStream(),真的); 字符串的身体=零; 而(真){ 身体=in.readLine (); 如果(身体==null) { 打破; } System.out.println(服务器:“;+身体); out.println(“服务器端回送响应的数据!”); } }捕捉(异常e) { e.printStackTrace (); 最后}{ 如果(在!=null) { 尝试{ in.close (); }捕捉(IOException e) { e.printStackTrace (); } } 如果(!=null) { 尝试{ out.close (); }捕捉(异常e) { e.printStackTrace (); } } 如果(套接字!=null) { 尝试{ socket.close (); }捕捉(IOException e) { e.printStackTrace (); } } 套接字=零; } } }
<>强客户端(客户端):强>
包com.ietree.basicskill.socket.mode1; 进口java.io.BufferedReader; 进口java.io.IOException; 进口java.io.InputStreamReader; 进口java.io.PrintWriter; 进口java.net.Socket;/* * * 客户端 */公共类客户{ 最终的静态字符串地址=?27.0.0.1"; 最终的静态int端口=8765; 公共静态void main (String [] args) { Socket套接字=零; BufferedReader=零; PrintWriter=零; 尝试{ 套接字=新的套接字(地址、端口); 在=new BufferedReader(新InputStreamReader (socket.getInputStream ()));=new PrintWriter (socket.getOutputStream(),真的);//向服务器端发送数据 out.println(“接收到客户端的请求数据……“); 字符串响应=in.readLine (); System.out.println(客户:“;+反应); }捕捉(异常e) { e.printStackTrace (); 最后}{ 如果(在!=null) { 尝试{ in.close (); }捕捉(IOException e) { e.printStackTrace (); } } 如果(!=null) { 尝试{ out.close (); }捕捉(异常e) { e.printStackTrace (); } } 如果(套接字!=null) { 尝试{ socket.close (); }捕捉(IOException e) { e.printStackTrace (); } } 套接字=零; } } }
程序输出:
客户:服务器端回送响应的数据。
同步非阻塞(NIO)
异步非阻塞(AIO)
看完上述内容,你们掌握利用Java怎么样实现网络通信功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!