[英]C# multiThreaded client-server
我正在做一個多線程服務器-客戶端項目。 在我的項目服務器中,服務器正在接收來自客戶端的連接請求,並提供一個線程來處理讀取和發送數據。 但是在讀取數據時,在第61行給出了一個例外。
networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);
例外是:
>> System.ArgumentOutOfRangeException: Specified argument was out of the range
of valid values.
Parameter name: size
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 s
ize)
at Server.handleClinet.doChat() in C:\Users\Mamun\documents\visual studio 201
0\Projects\Server\Server\Program.cs:line 62
我在這里上傳了我的項目: http : //www.mediafire.com/?z2z5moqn8zdl6pt
我正在使用以下代碼參考: http : //csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm
http://csharp.net-informations.com/communications/csharp-multi-threaded-client-socket.htm
請查看我的項目,並告訴我怎么了。 提前致謝。
根據MSDN ,如果發生以下情況,則可能發生錯誤:
size參數小於0。
-要么-
size參數大於緩沖區長度減去offset參數的值 。
我還沒有看到您的代碼,但我猜想是第二種情況 。 在MSDN的示例中,他們只是使用緩沖區本身的長度作為size
值:
byte[] myReadBuffer = new byte[1024];
int numberOfBytesRead = 0;
do
{
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
//..
}
while(myNetworkStream.DataAvailable);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.