在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方法。