Socket服务端与客户端一些小问题

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:第一次写 不对之处请指出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值