我有一个带有两个按钮的窗体,首先开始侦听套接字,并显示带有地址的消息框,从该地址发送地址消息。第二个按钮用于发送消息,以解决当我按下监听按钮时正在监听的问题。我试图绑定发送的套接字。例如,我想从端口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