c#中的编程:
private void listBox1_Click(object sender, EventArgs e)
{
String data = (String)this.listBox1.SelectedItem;
data = data.TrimEnd(new char[] { '\r', '\n' });
try
{
ip = Dns.GetHostAddresses(data);
}
catch (SocketException ex)
{
MessageBox.Show(ex.ErrorCode.ToString());
}
clientIP = new IPEndPoint(ip[0], 6000);
newSock.Bind(clientIP);
newSock.Listen(100);
resetEvent.Set();
}
在上面的代码中,我获取了列表框中显示的远程主机的ip地址,并相应地为了开始接受需要创建IPEndPoint
(clientIP
)的消息。 / p>
newSock
是一个类型为socket的变量,初始化为:
newSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
问题出在我将套接字newSock绑定到IPEndPoint clientIP的行中,我收到一条错误消息,说明它是一个无效的地址。 但是为了交叉检查,我试图在正确执行的消息框上显示ip-address。 究竟出了什么问题?
答案 0 :(得分:2)
您不应将套接字绑定到远程主机地址。它用于指示您应该监听哪个入站IP地址。您应该指定一个自己的IP地址(如果只想监听单个IP)或指定IPAddress.Any
(0.0.0.0)来监听您拥有的所有IP地址。
顺便说一下,如果要连接到远程地址,则根本不应使用Bind
。您只需使用Connect
方法