局域网聊天编成--问题
这几天在做局域网聊天软件,想学学winform编写,可是遇到了问题,不知道该怎么解决,问题大家请看下面,请各位大大帮忙解决一下:
1.运行之后就会弹出这个错误:
2.点击确定之后后提示如下的异常:
3.我进行单步调试发现:
我IPAddress address= ipHostEntry.AddressList[0];用的是AddressList[0]第一个元素,而我电脑确切的IP却应该是AddressList[2].
但是我在别的电脑也进行测试过,他们运行出来确切的IP有AddressList[1]、AddressList[3]、也有AddressList[5]的,我懵了,各位这个问题怎么解决,请帮帮忙。
4.我的源码如下:
/// <summary> /// 处理接受到的信息,分别对文件和普通消息进行处理 /// </summary> private void ReceiveNews() { try { //初始化接受套接字:寻址方案,以字符流方式和Tcp通信 socketReceive = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //获取本机IP地址并设置接受信息的端口 String HostName = Dns.GetHostName(); IPHostEntry ipHostEntry = Dns.GetHostEntry(HostName); IPAddress address= ipHostEntry.AddressList[0]; ipReceive = new IPEndPoint(address, 8001); //将本机IP地址和接受端口绑定到接受套接字 socketReceive.Bind(ipReceive); //监听端口,并设置监听缓存大小为1024byte socketReceive.Listen(1024); } catch(Exception err) { MessageBox.Show(err.Message); } //定义接受信息时缓冲区 byte[] buff = new byte[1024]; //连续接受客户端发送过来的信息 while (true) { //定义一个chat套接字用来接受信息 Socket chat = socketReceive.Accept(); //定义一个处理信息的对象 ChatSession cs = new ChatSession(chat,this.lvwDisplayUser); //定义一个新的线程用来接收其他主机发送的信息 Thread newThread = new Thread(new ThreadStart(cs.StartChat)); newThread.SetApartmentState(ApartmentState.STA); //启动新的线程 newThread.Start(); } }麻烦各位高手了,请多多指点。