***********关于Socket的问题,大家都来帮忙看看*************

Iforgot 2004-03-17 09:17:09
就是我Socket socket=ServerSocket.accept();
然后,当我和这个socket对应的客户端socket断线了,我服务器怎么知道?

好像Socket的那些状态判断函数都不能判断出来。


谢谢!
...全文
111 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
Iforgot 2004-04-03
  • 打赏
  • 举报
回复
顺便,TCP/IP自身就是通过发送消息超时得知断线的。 最为高层,没有必要再次实现,而且会导致性能下降。


算了。 谢谢各位好意!
Iforgot 2004-04-03
  • 打赏
  • 举报
回复
各位 所说 某非不知道。

只是,事实不如所言。

即使客户端关闭窗口,这样这个客户端的socket已经关闭,服务器会断开连接。所以,对我,根本不用关系他到底是因为 网络故障 还是客户端 导致的断线 造成的。

至于程序,如果不写,我怎么敢断言不行? 何况是求教。

网络程序,我还是做的不少,五子棋是做的第一个。其它,因为公司机密和非一言能详,不便相告。
programer23 2004-04-03
  • 打赏
  • 举报
回复
学习
liuxiaolinlxl 2004-04-03
  • 打赏
  • 举报
回复
不知道这位仁兄说的“断线”是什么意思,如果是客户端关闭了窗口,而和你断开连接,上面的所有回复就都是废话了,这只有你在写客户端的程序的时候,通过在关闭窗口时间中加入一个时间处理:向你服务器发送一个信息,你通过这信息来确认客户端关闭了连接。
如果是因为某些原因致使连接中断,这样通过上面的方式,就很难检测到对方的离开,只能通过上面一些兄弟所说的那样,通过在发送数据而抛出异常:发送数据超时,来确认连接出现了问题,不知道你做过聊天程序没有,我想你做完一个比较完整的聊天程序,你就应该会体会到其中的奥秘了
qqbz 2004-04-02
  • 打赏
  • 举报
回复
1、“断开后,socket还可以写,并没有IOException发生”:奇怪哦,java里有参数可以在断网的情况下,继续读到在流中的剩余数据。
2、客户端没有发送数据过来:read将阻塞,或返回0,和客户断开java里根本是不同处理。
3、我是说断开了我如何知道? 一般客户端断开,肯定在服务端有异常抛出的。不必做啥判断的,直接处理。
4、你写个程序试一下就知道了。
raul6334 2004-04-02
  • 打赏
  • 举报
回复
read/writ时应该会抛出异常的,在catch块里给服务器发消息咯。。。
Iforgot 2004-04-02
  • 打赏
  • 举报
回复
我用的是ObjectInputStream(不能换用其他的,因为特别需求)。
Iforgot 2004-04-02
  • 打赏
  • 举报
回复
SocketInputStream 这个类没有找到。

我不一定非要用readLine方法。

因为特殊需求,必需采用其他方法。
Argentia 2004-04-02
  • 打赏
  • 举报
回复
studying!
buaaaladdin 2004-04-02
  • 打赏
  • 举报
回复
补充:是SocketInputStream的readLine()方法抛出的。
buaaaladdin 2004-04-02
  • 打赏
  • 举报
回复
遇到同样的问题。

在我的代码里,客户端关闭后,服务器端接受到SocketException: Connection Reset。用这个可以判断的吧。
kunbone 2004-04-02
  • 打赏
  • 举报
回复
学习,,关注
Raulgodle 2004-04-02
  • 打赏
  • 举报
回复
学习+关注
Iforgot 2004-04-02
  • 打赏
  • 举报
回复
试过了。 不行。
WXPQD 2004-03-30
  • 打赏
  • 举报
回复
Server.accept()是返回Socket的。当没有Socket返回时,就一直在这里等。
当返回Socket后,就跟飞狐说的一样了。
Iforgot 2004-03-30
  • 打赏
  • 举报
回复
没人回答了吗?
btcrazyfan 2004-03-25
  • 打赏
  • 举报
回复
飞狐。。。。。。。。。。。。。is right.

qm0445 2004-03-25
  • 打赏
  • 举报
回复
你可以定期的发送个消息去核实一下客户端是否还在
mars_han 2004-03-25
  • 打赏
  • 举报
回复
use listen!

programming socket in delphi can use it.
asdmonster 2004-03-25
  • 打赏
  • 举报
回复
up
加载更多回复(23)

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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