社区
Java SE
帖子详情
关闭Socket 的问题
gcgan
2006-04-29 02:30:56
为什么我的程序里当客户端或服务端关闭了,另一端都会抛出一个Socket Reset的异常。是Socket 中数据流的问题,还是怎么会事?
...全文
268
11
打赏
收藏
关闭Socket 的问题
为什么我的程序里当客户端或服务端关闭了,另一端都会抛出一个Socket Reset的异常。是Socket 中数据流的问题,还是怎么会事?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
InfiniteP
2006-05-06
打赏
举报
回复
用你上面那种方法,那对方发来的刚好是一个“exit”怎么办?
-----------------------------------------------------------------------------
当然,简单发送"exit"字符串给对方,可能会与正常情况下发送"exit"字符串发生混淆,你应该尽量设计好协议关键字,比如产生一个随机N位串,并使之留为关键字,并设定信息发送方不能发送该关键字。
gcgan
2006-05-06
打赏
举报
回复
但tcp协议断开时,不是有握手协议的嘛
要发一个fin过去嘛。还有用你上面那种方法,那对方发来的刚好是一个“exit”怎么办?
gcgan
2006-05-06
打赏
举报
回复
呵呵
谢谢哈
InfiniteP
2006-05-05
打赏
举报
回复
好像Socket类的close()方法不会给对方对方的Socket发送相关信息。Socket类没有检测对方是否先关闭的方法。isConnected()与isClosed()方法都只能判断自身是否连接与关闭。不过,如果你以后找到了更好的方法,请不吝赐教
InfiniteP
2006-05-05
打赏
举报
回复
我原来也遇到过类似的问题。我的解决方式是,设置一个简单的传输协议:
1、在客户端与服务器端的退出事件前发送一个简单的字符串给对方,比如"exit"(就当是协议的关键字吧~),对方可以根据你发送这一字符串与你的socket,判断你已关闭了连接。
2、在客户端与服务器端的监听传入流事件中都加上if条件判断,
Socket socket;//已连接对方的SOCKET
InputStreamReader reader;
BufferedReader input;
String str;//对方发来的信息
reader=new InputStreamReader(socket.getInputStream());
input=new BufferedReader(reader);
str=input.readLine();
boolean LISTEN_CLOSED=false;//设置关闭的条件
while(!(LISTEN_CLOSED)&&(!(socket.isClosed())))
{
if((str.equals("exit"))
{
socket.close();
LISTEN_CLOSED=true;
}
else
{
//正常情况读取对方信息
......
str=input.readLine();
}
}
如果你是说对方强行关闭,假如对方的窗口界面的话,你可以在窗口的关闭事件中发送"exit"给对方,说明你已关闭了。
当然,简单发送"exit"字符串给对方,可能会与正常情况下发送"exit"字符串发生混淆,你应该尽量设计好协议关键字。
-_-(第一次在CSDN回答问题,献丑啦~~~~)
gcgan
2006-05-05
打赏
举报
回复
java的Socket类的close()方法会发送套接字关闭信息吗?
gcgan
2006-05-03
打赏
举报
回复
就是象楼上说的那样但怎么做才不会呢?
zhmt
2006-04-29
打赏
举报
回复
比如client端在关闭socket之前强行关闭了程序
那么server端就会产生这么一个异常
zhmt
2006-04-29
打赏
举报
回复
我遇到过
是在SOCKET正常关闭之前产生了异常
造成socket非正常关闭
于是就会产生Socket Reset的异常
上帝也需要程序员
2006-04-29
打赏
举报
回复
不一定
yanhan0615
2006-04-29
打赏
举报
回复
代码?
Socket
编程例子
3.
关闭
连接:完成通信后,客户端和服务器都需要调用`close()`函数
关闭
Socket
,释放资源。 三、UDP
Socket
编程 UDP
Socket
编程相比TCP更简单,因为它不需要建立和维护连接。客户端和服务器都使用`
socket
()`创建...
Java实现
Socket
长连接和短连接
在长连接中,一次连接可以处理多个请求,直到连接的某一方主动
关闭
或者因为网络
问题
被迫
关闭
。长连接能减少连接创建和
关闭
的开销,提高效率,但可能会消耗更多系统资源,尤其是服务器端。 实现Java
Socket
长连接的...
android在wifi下手机与电脑的
socket
通信
4. 在不需要通信时,
关闭
Socket
和Server
Socket
。 **电脑端客户端实现:** 1. 创建
Socket
实例,指定服务器的IP地址和端口号。 2. 获取
Socket
的输出流和输入流,用于发送数据和接收数据。 3. 通过输出流发送数据,...
C#
Socket
简单例子(服务器与客户端通信)
例如,在发送和接收数据后,可以使用`Shutdown()`方法
关闭
发送或接收通道,然后用`Close()`方法
关闭
Socket
。 在C#中,使用
Socket
类进行服务器和客户端通信可以实现异步操作,这在处理大量并发连接时尤其有用。异步...
java的
socket
多线程编程之
关闭
socket
这两天在写
socket
通信,也就是下面的东西,然后遇到了个
问题
,怎样才能优雅的
关闭
socket
(正常
关闭
而不是发生异常导致的
关闭
) 直接说思路吧,后面再说我遇到的
问题
! 我们这里说的
关闭
是用户点击断开按钮后再
关闭
...
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章