1

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

2 に答える 2

2

それがあなたの問題です。あなたは Form1 コンストラクターで _clientSocket にアクセスしていますが、まだ初期化されていません。

于 2013-03-14T03:11:43.257 に答える