我有一個帶有兩個按鈕的窗體,首先開始偵聽套接字,並顯示帶有地址的消息框,從該地址發送地址消息。第二個按鈕用於發送消息,以解決當我按下監聽按鈕時正在監聽的問題。我試圖綁定發送的套接字。例如,我想從端口50000發送它。我使用的是Bind
方法,但它只在第一時間工作,而不是異常變成,該地址通常只能使用一次,而且我需要重新打開表單。我怎麼解決這個問題 ?這裏是我的代碼發送:綁定發送套接字
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
奇怪,但第二個建議並沒有幫助。我試圖在任何地方嘗試,但沒有奏效。 – Ramon