簡體   English   中英

C#多線程客戶端服務器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM