Cod*_*nny 6 java sockets debugging client-server
我正在使用Socket与ServerSocket通信.字符串正从服务器发送到我的Socket.每条不同的行都是一条消息,在解析时包含信息.要阅读这些文本行,请使用扫描仪.
问题是数据正在"爆发".虽然服务器连续均匀地发送数据,但客户端扫描器读取的数据似乎暂停,一次读取一堆消息(30-40),然后再次暂停.它无限期地重复这个循环.
如果我增加发送数据的速率,则暂停的持续时间减少; 如果我减慢数据速度(每秒1条消息),则错误仍然存在,暂停时间变长.这几乎就像Socket在向扫描器发送任何数据之前等待其缓冲区溢出一样; 然后冲洗所有东西并再次等待溢出.但是,如果我减小Socket缓冲区的大小,则根本没有任何变化.
应该注意的是,我之前在这个方法中使用过Scanner和Socket - 从服务器端 - 并且一切都按照需要工作.另外,我a)尝试使用像Java Tutorials这样的BufferedReader(没有更改bug)和b)将服务器传输列表打印到文件中,并以相同的方式从文件中读取,并且程序按预期工作(消息接收率恒定等)因此问题似乎在Socket本身.
那么:我该如何解决这个问题呢?我没有想法,我真的不知道发生了什么.
代码(根据要求):
// In try block
// Makes the connection
Socket connection = new Socket(TARGET_MACHINE, PORT_NUMBER);
Scanner reader = new Scanner(connection.getInputStream());
Run Code Online (Sandbox Code Playgroud)
// In new Thread
// In run()
while(!finished) // Boolean exit strategy
{
if(reader.hasNextLine())
Sring message = reader.nextLine();
}
Run Code Online (Sandbox Code Playgroud)
这就是我连接和检索字符串的方式.
另外,我收到的字符串通常大约20-40个字符.