try { int port = 2000; //端口号 string hostInfo = Dns.GetHostName(); //主机名 IPAddress[] addressList = Dns.GetHostAddresses(hostInfo); //获取IP地址列表 //用正则判断IP地址列表中是否有基于IPv4的IP地址 Regex regex = new Regex(@"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$"); Match ip = null; foreach (IPAddress addr in addressList) { ip = regex.Match(addr.ToString()); if (ip.Success) //匹配成功 { break; } } IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ip.Value), port); //把ip和端口转化为IPEndPoint实例(一个“终结点”唯一标识一个设备) Socket ListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个侦听Socket类 ListenSocket.Bind(ipe);//绑定2000端口 ListenSocket.Listen(0);//开始监听 Console.WriteLine("Wait for connect"); Socket ConnSocket = ListenSocket.Accept();//为新建连接创建新的Socket Console.WriteLine("Get a connect"); byte[] recvBytes = new byte[1024]; int bytes = ConnSocket.Receive(recvBytes, recvBytes.Length, 0);//从客户端接收信息 string recvStr = Encoding.ASCII.GetString(recvBytes, 0, bytes); Console.WriteLine("Server Get Message:{0}", recvStr);//把客户端传来的信息显示出来 string sendStr = "ok!your message has been received successfully!"; byte[] bs = Encoding.ASCII.GetBytes(sendStr); ConnSocket.Send(bs, bs.Length, 0);//“告知”客户端信息已成功接收 //关闭套接字 ConnSocket.Close(); ListenSocket.Close(); } catch (ArgumentNullException e) { Console.WriteLine("ArgumentNullException:{0}", e.ToString()); } catch (SocketException e) { Console.WriteLine("SocketException:{0}", e.ToString()); } Console.WriteLine("Press Enter to Exit"); Console.ReadLine();