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);
}
}