Java socket疑惑

sdzzboy 发布于 2013/08/28 21:13
阅读 324
收藏 1
这几天在使用Java Socket的过程中突然有一个疑惑。Socket通过read函数读取数据,如果read函数的返回值为-1则表明已经没有了数据。我的疑惑就是“没有了数据”表明什么。如果在另一端我先发送了一部分数据(称为A部分),间隔了足够长的时间,再继续发送数据(称为B部分),那么-1是在A的时候返回的呢还是在B的时候返回的,在底层如何标识的呢?
加载中
0
玄雨
玄雨
read是阻塞的...如果返回-1貌似表示数据已经读完并且连接不存在了....
sdzzboy
sdzzboy
thanks
liuleidefeng
liuleidefeng
socket只要未关闭,连接还是存在的
0
liuleidefeng
liuleidefeng
对于你的问题,最好的解惑方式是写个程序,检验一下就ok了,在适当的地方加上输出时间,看一下,或者直接debug一遍,先后顺序都出来了
0
p
polaris_chen

-1 在你客户端关闭连接的时候返回。

发送完A后read会阻塞,然后接收到B,处理完继续阻塞,直到客户端断开,返回-1

0
penngo
penngo
-1表示连接已关闭,并不是并不是数据读取完。
0
铂金小虫
铂金小虫
socket中的read和普通的file read不一样,当没有数据接受时,会一直阻塞,而不是返回-1。
0
陆奕言
陆奕言
首先,返回-1是指,另一端,已经socket.close()了,你可以自己写一段段代码试试,这个问题不难理解
返回顶部
顶部