JAVA Socket客户端疑问

NoOneQ 2017-10-14 06:03:09
刚入手Socket,有个问题请教下:是否客户端每发送一次消息,都要new一个Socket对象出来?详细描述如下:

通常客户端都是这么写的:

//创建socket
Socket socket = new Socket(ip,port)

//获取流来写数据
socket.getOutputStream()

一个客户端有"连接"按钮,有"发送"按钮。
我理解我只需要的"连接"按钮里面调用【创建socket】的代码来连接服务端,然后将socket对象保存起来
然后在"发送"按钮里面,取出socket对象,并调用【获取流来写数据】的代码来与服务端通信。

而实际上如果按上述方式来进行的话,服务端只能接受一次客户端的"发送"按钮所发送的消息。(服务端已经while(true)监了)
如果我将上述代码,即【创建socket】和【获取流来写数据】都放到"发送"按钮里面,服务器端是可以多次接收客户端的消息的

也就是说,客户端每发送一次消息,都要new Socket对象出来才行。是我理解的不对,还是确实就是这样?
...全文
69 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
NoOneQ 2017-10-15
  • 打赏
  • 举报
回复
在客户端中,我new Socket(ip,port) 一次,然后我用这new出来的一个socket对象,连续向服务端发送2次消息,2次中间线程睡眠3秒,然后发现第2次发送的消息,服务端监听不到。必须是2次发送消息都new Socket(ip,port),服务端才能收到2次消息。 这是为什么?

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧