2つのボタンを持つフォームがあります。最初にListenソケットを開始し、アドレスメッセージが送信されたメッセージボックスを表示します。 2番目のボタンは、私がリッスンボタンを押しているときに聞いているアドレスにメッセージを送信するためのものです。私はsendedソケットをバインドしようとしています。たとえば、私はポート50000から送信したいと思います。私はBind
メソッドを使用していますが、例外よりも最初のときに動作します。そのアドレスは通常1回だけ使用でき、フォームを再度開く必要があります。どうすればこの問題を解決できますか?ここに私のコードでは、送信するためです:バインド送信ソケット
private void button2_Click(object sender, EventArgs e)
{
string local_host = System.Net.Dns.GetHostName();
string local_ip_address = Dns.GetHostByName(local_host).AddressList[0].ToString();
IPEndPoint send_point = new IPEndPoint(IPAddress.Parse(local_ip_address), 50000);
Socket send_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint connected_point = new IPEndPoint(IPAddress.Parse(textBoxIPListen.Text),
Convert.ToInt32(textBoxPortListen.Text));
try
{
send_socket.Bind(send_point);
send_socket.Connect(connected_point);
byte[] data = Encoding.Unicode.GetBytes("TestTest");
send_socket.Send(data);
send_socket.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Dziekuje!しかし、問題は、上司が私が指定されたアドレスからメッセージを送ることを望んでいたことです。私はちょうど接続メソッドを使用している場合、それは完全に送信しているが、システムが自動的にポートを選択し、これは私の上司が望んでいない:/私は接続する前にバインドを使用しているとき、それは動作している、初回のみ動作し、例外になることはありません。 – Ramon
私は '(send_socket)'を使ってみましたが、残念ながらそれは役に立たなかった:/同じ例外があります。 私は二番目のアドバイスを試みます。したがって、完全なコードは次のようになります: 'try { send_socket.Bind(send_point); send_socket.Connect(connected_point); byte [] data = Encoding.Unicode.GetBytes( "TestTest"); send_socket。データを送る); } ' – Ramon
奇妙ですが、2番目の助言も助けませんでした。私は試してみるとどこにでも置こうとしましたが、うまくいきませんでした。 – Ramon