我有类似的问题,可能像here一样。
从服务器(Java TCP Server)我这样做:
public void sendMsg(String msg) {
out.println(msg); // msg is: "MSG Hello" without quetes
out.flush();
}
当我将它推两次或更多时,我只收到客户端代码中的第一条消息,即unity3d code c#socket
void Update() {
if(connected) {
try {
if(theStream.DataAvailable) {
String data = sr.ReadLine();
// bla bla
答案 0 :(得分:1)
摆脱if(theStream.DataAvailable)
。您无法检查数据是否可用,因为如果您已经收到数据,则该数据不可用。虽然ReadLine
函数只返回一行,但它可能只读取一行。
所以这就是发生的事情:
发送所有数据。
数据可用,您拨打ReadLine
。它会读取所有数据并返回一行。
现在没有数据可用,因为它已经从连接中读取。
该检查还有其他问题。如果它试图避免在一条线路不可用时调用ReadLine
,它就不会这样做。一些可用的数据并不意味着整行。 (想象一下,如果另一端恶意发送一个X
字节。)