[英]Is there a way to check socket available data, synchronously?
我想在調用receive()方法之前檢查套接字可用數據以進行讀取。 但它不起作用。 我認為我檢查套接字可用數據的方式不正確。 這是代碼:
private Socket _clientSocket; //Client socket
public Form1()
{
InitializeComponent();
//Check for data available before calling Receive().
if (_clientSocket.Poll(-1, SelectMode.SelectRead))
{
Receive();
}
}
它給我這個錯誤: Object reference not set to an instance of an object
檢查套接字可用數據以讀取的正確方法是什么? 我正在考慮某種事件,但我無法弄清楚。
有什么幫助嗎?
編輯:用於連接的按鈕:
private void BtnConnect_Click(object sender, EventArgs e)
{
try
{
string ip = TboxIP.Text;
int port = int.Parse(TboxPort.Text);
_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Connect to the host
_clientSocket.Connect(IPAddress.Parse(ip), port);
if (SocketConnected(_clientSocket) == true)
{
lblStatus.Text = "Socket Connection Established .. ";
}
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message);
}
}
那是您的問題,您正在Form1構造函數中訪問_clientSocket,並且尚未初始化。
查看文檔: Socket.Poll()如果像您一樣將微秒數設置為負數,它將永遠等待任何類型的響應。
根據測試使用等待時間,因此不要
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.