黑马程序员技术交流社区
标题:
关于socket连接被重置的问题
[打印本页]
作者:
fighting
时间:
2013-3-25 13:53
标题:
关于socket连接被重置的问题
本帖最后由 fighting 于 2013-3-30 23:04 编辑
上午看一哥们问了一个socket的问题,我试了试发现些问题:
当在一端将数据写出,在另一端读取数据时,总是提示连接被重置,
哪位能说明一下socket的实现原理,以及出现这种情况的原因。
class TextClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost", 10006);
OutputStream os = s.getOutputStream();
os.write("hahahahaha".getBytes());
os.close();
s.close(); //如果这里不关闭的话,在服务端问题提示连接被重置
}
}
复制代码
class TextServer {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(10006);
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte[] buffer = new byte[1024];
int length = -1;
while(-1 != (length = is.read(buffer))){
System.out.println(new String(buffer, 0, length));
}
ss.close();
s.close();
}
}
复制代码
作者:
VOIDMAIN
时间:
2013-3-29 23:07
你这是在玩TCP连接,TCP连接的最大特点就是基于连接的,Socket有握手机制,如果客户端莫名关闭断开socket连接,服务器也会因为没有没有连接而关闭。
作者:
移动小坦克
时间:
2013-3-30 07:19
这么好的问题为什么没有人回答啊
连接重置,是不是说,在传输数据的时候,另一个客户端连接到服务器,而该客户端与之前那个客户端
ip和端口相同,但是我想不出来为什么会这样,楼主的代码也没有用循环啊,还有
这个跟关闭socket有什么关系呢?为什么关闭了就不会出现问题,不关闭就会重置?
作者:
fighting
时间:
2013-3-30 09:00
韩松范 发表于 2013-3-30 07:19
这么好的问题为什么没有人回答啊
连接重置,是不是说,在传输数据的时候,另一个客户端连接到服务器,而该 ...
我也不知道为什么会这样。。。
作者:
fighting
时间:
2013-3-30 23:05
又没有满意的回复
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2