Я хочу проверить доступные данные сокета, прежде чем я вызову метод 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
, что это правильный способ проверить сокет имеющиеся данные для чтения? Я думаю о каких-то событиях, но я не могу понять это.
любая помощь?
EDIT: Кнопка для подключения:
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);
}
}
Показать код, который инициализирует _clientSocket – Gary
@Gary, я только что отредактировал. есть кнопка подключения, которая инициализирует _clientSocket. – Liban