- 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();