0

嗨,我在将 tcp 套接字从我的 android 设备发送到我 PC 上的 Asp.net 应用程序时遇到问题

问题似乎出在 ASP.net 代码上,因为我收到了 5 个字节,但无法读取它们。

        try
        {
            listener = new TcpListener(serverPort);
            listener.Start();

        }catch(SocketException se)
        {
            string s = se.Message;
            Environment.Exit(se.ErrorCode);
        }

        byte[] rcvBuffer = new byte[5000000];
        int bytesRcvd;
        int buffersize = 1024;
        for(;;)
        {
            TcpClient client = null;
            NetworkStream netStream = null;

            try
            {
                client = listener.AcceptTcpClient();
                netStream = client.GetStream();

                byte[] data = new byte[client.ReceiveBufferSize];
                bytesRcvd = netStream.Read(rcvBuffer, 0, rcvBuffer.Length);
                int totalBytesEchoed = 0;

                while ( bytesRcvd > 0)
                {
                    int nextPacket = (bytesRcvd > buffersize) ? buffersize : bytesRcvd;

                    int bytes = netStream.Read(rcvBuffer, 0, bytesRcvd);
                    totalBytesEchoed += bytesRcvd;
                    string s = Encoding.ASCII.GetString(data, 0, bytes);

                }

                netStream.Close();
                client.Close();
            }
            catch(Exception e)
            {
                netStream.Close();

            }
        }

    }
4

1 回答 1

1

netStream 上的Read()调用将数据填充到 中rcvBuffer,但随后您尝试从data缓冲区中获取字符串...

在尝试获取字符串之前,您阅读了两次,一次在 while 之前,一次在 while 内。也许您可以使用do{}while()循环。

于 2013-08-28T10:25:32.020 回答