溫馨提示×

C# socket.Client.Receive(Rece)如何判斷有無接收數(shù)據(jù)

c#
小億
429
2023-12-19 18:26:03
欄目: 編程語言

在C#中,使用Socket類的Receive方法接收數(shù)據(jù)時,可以通過判斷返回值來判斷是否有接收到數(shù)據(jù)。

Receive方法的返回值表示接收到的字節(jié)數(shù),如果返回值大于0,則表示有數(shù)據(jù)被成功接收。如果返回值為0,則表示連接已經(jīng)關(guān)閉。

以下是一個示例代碼,演示如何判斷是否有接收到數(shù)據(jù):

byte[] buffer = new byte[1024]; // 創(chuàng)建接收數(shù)據(jù)的緩沖區(qū)

int bytesRead = clientSocket.Receive(buffer); // 接收數(shù)據(jù),并返回接收到的字節(jié)數(shù)

if (bytesRead > 0)
{
    // 有數(shù)據(jù)被接收到
    string receivedData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
    Console.WriteLine("Received data: " + receivedData);
}
else
{
    // 連接已關(guān)閉
    Console.WriteLine("Connection closed.");
}

在上述代碼中,clientSocket是一個已經(jīng)建立連接的Socket對象。Receive方法接收數(shù)據(jù)并將其存儲在buffer數(shù)組中,然后通過判斷bytesRead的值來確定是否有接收到數(shù)據(jù)。

需要注意的是,Receive方法是一個阻塞方法,如果沒有接收到數(shù)據(jù),它將一直等待,直到有數(shù)據(jù)到達或連接關(guān)閉。如果希望非阻塞地接收數(shù)據(jù),可以使用Socket類的ReceiveAsync方法。

0