1.客户端与服务端的连接建立是在客户端new出于服务端相对应端口和ip地址
客户端
Socket socket = new Socket("TroyeSivan", 10000);
服务端
ServerSocketb server = new ServerSocket(10000);
Socket socket = server.accept();
服务端在监听端口10000时候 等待客户端的连接
客户端的Socket()服务一被new出来
服务端拿到客户端的连接 两者的服务就建立起来
2.客户端与服务器端流的关闭也代表两者的连接关闭
TCP连接是建立在IO流的传输上的
测试结论:
客户端
Outputstream out = socket.getOutputStream();
out,close();
Outputstream out2 = socket.getOutputStream();//关闭流之后再通过Socket获取Outputstream()流
out.write("发送数据".getByte());
服务端
Thread.sleep(1000);//为了确保客户端已经关闭Outputstream流
byte[] buff = new byte[1024];
in.len(buff);
测试得出
客户端抛出异常
SocketExceptiont异常
结论:流的关闭也代表服务端和客户端的连接关闭
3,服务器端有缓冲区
如果客户端给服务器端发送数据 客户端突然结束掉连接 服务器端还是可以读取到客户端发送过来的数据
客户端
out.write("发送数据".getByte[]);
socket.close();
服务器端
Inputstream in = socket.getInputStream();
Thread.sleep(10000);//确保客户端已经关闭掉Socket服务
byte[] buff = new byte[1024];
in.read(buff);
测试结果:
可以读取到客户端断开连接之前的数据
ps:第一次写 不对之处请指出