[javaSE] 网络编程(TCP服务端客户端互访阻塞)

[javaSE] 网络编程(TCP服务端客户端互访阻塞),第1张

概述客户端给服务端发送数据,服务端收到数据后,给客户端反馈数据 客户端: 获取Socket对象,new出来,构造参数:String的ip地址,int的端口号 调用Socket对象的getOutputStr

客户端给服务端发送数据,服务端收到数据后,给客户端反馈数据

 

客户端:

获取Socket对象,new出来,构造参数:Stringip地址,int的端口号

调用Socket对象的getoutputStream()方法,获取到OutputStream对象

调用OutputStream对象的write()方法,输出流输出数据,参数:byte[]字节数组

 

调用Socket对象的getinputStream()方法,获取到inputStream对象

调用inputStream对象的read()方法,读取数据得到读取的长度,参数:byte[]字节数组

获取String对象,new出来,构造参数:byte[]字节数组,0开始,len长度

调用Socket对象的close()方法,关闭socket

 

客户端的输入流读取read()方法,是阻塞式方法,会在这里等待服务端返回数据

 

服务端:

获取ServerSocket对象,new出来,构造参数:int的端口号

调用ServerSocket对象的accept()方法,得到Socket对象

调用Socket对象的getinputStream()方法,得到输入流对象,解析输入流

调用Socket对象的getoutputStream()方法,得到输出流对象,输出数据

调用Socket对象的close()方法,关闭socket

调用ServerSocket对象的close()方法,关闭ServerSocket

 

服务端的accept()方法,是阻塞式方法,会在这里等待客户端的连接

 Server.java

import java.io.inputStream; java.io.OutputStream; java.net.InetAddress; java.net.ServerSocket; java.net.socket;/** * 服务端 *  * @author taoshihan *  */public class Server {    static voID main(String[] args) throws Exception {        ServerSocket serverSocket = new ServerSocket(10004);//        while (true) {            Socket socket = serverSocket.accept();            inputStream inputStream = socket.getinputStream();            byte[] buf = new byte[1024];            int len = inputStream.read(buf);            InetAddress ip = socket.getInetAddress();                        System.out.println("来自" + ip.getHostAddress() + "说:"                    + new String(buf,0,len));            Thread.sleep(10000);睡眠10秒钟,客户端会一直等待            OutputStream out=socket.getoutputStream();            out.write("我是服务端,已经收到信息".getBytes());                        socket.close();            serverSocket.close();        }    }}
 java.io.IOException; * 客户端 *  taoshihan *  ClIEnt {     Exception,IOException {        Socket socket=new Socket(InetAddress.getLocalHost(),10004);        OutputStream outputStream=socket.getoutputStream();        outputStream.write("我是客户端,服务端你好".getBytes());                inputStream in=socket.getinputStream();        byte[] b=];        int len=in.read(b);这里会阻塞,等待服务端的返回        System.out.println(new String(b,len));        socket.close();    }}

 

ClIEnt.java

 

总结

以上是内存溢出为你收集整理的[javaSE] 网络编程(TCP服务端客户端互访阻塞)全部内容,希望文章能够帮你解决[javaSE] 网络编程(TCP服务端客户端互访阻塞)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1154389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存