【发布时间】:2010-08-19 03:18:55
【问题描述】:
在我的程序中,我正在创建套接字并且客户端连接时我正在创建新线程并尝试从/向连接到此套接字进行读取和写入,但由于主机第二次关闭连接,所以总是出现读取错误命令,来自客户端的第一个命令很好,第三个工作正常。我尝试检查 clientSocket 是否已连接以及 networkStream 是否可读并且它们总是返回 true。我该如何解决这个问题?它怎么可能 - networkStream.CanRead 返回 true 但 networkStreamRead 引发错误?我是 C# 和套接字编程的新手,很抱歉这个愚蠢的问题。
clientSocket 是 TcpClientnetworkStream 是 NetworkStream
if (clientSocket.Connected == true)
{
requestCount = requestCount + 1;
networkStream = clientSocket.GetStream();
if (networkStream.CanRead == true)
{
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);
}
}
【问题讨论】:
-
clientSocket.ReceiveBufferSize 的值是多少? bytesFrom 是否足够大以接受这么多字节?
-
>>networkStream.CanRead 返回 true 但 networkStreamRead 引发错误?请给出错误的详细信息。
标签: c# multithreading sockets