Unity3d c#TCP客户端代码无法连续接收第二条消息

时间:2012-12-26 22:45:21

标签: unity3d tcpclient tcpserver tcpsocket

我有类似的问题,可能像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

1 个答案:

答案 0 :(得分:1)

摆脱if(theStream.DataAvailable)。您无法检查数据是否可用,因为如果您已经收到数据,则该数据不可用。虽然ReadLine函数只返回一行,但它可能只读取一行。

所以这就是发生的事情:

  1. 发送所有数据。

  2. 数据可用,您拨打ReadLine。它会读取所有数据并返回一行。

  3. 现在没有数据可用,因为它已经从连接中读取。

  4. 该检查还有其他问题。如果它试图避免在一条线路不可用时调用ReadLine,它就不会这样做。一些可用的数据并不意味着整行。 (想象一下,如果另一端恶意发送一个X字节。)