定制开发中使用Socket实现服务端和客户端通信
关键字:using System.Net; using.System.Sockets; 创建一个负责监听的Socket:Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 第一个参数是IPV4,第二个为流式,TCP用流式,UDP用数式,第三个为协议类型 IP地址获取:IPAddress ip = IPAddress.Any; Any是指当前服务器的所有ip 端口获取:IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));这里获取的文本框里的端口。 将负责监听的Socket绑定IP地址和端口:socketWatch.Bind(point); 设置监听队列,某一时间段最大连接数:socketWatch.Listen(100); 这样一个Socket就创建好了。 下面是接受连接: //负责监听的Socket来接收客户端的连接 while (true) { //负责跟客户端通信的Socket socketSend = socketWatch.Accept(); //将远程连接的客户端的IP和Socket存入集合中 dicSocket.Add(socketSend.RemoteEndPoint.ToString(), socketSend); //将远程连接的客户端的IP地址和端口号存储到下拉框中 this.Invoke(new Action(addCbomDic)); //连接成功 this.Invoke(new Action<string>(ShowMsg), socketSend.RemoteEndPoint.ToString() + "连接成功"); // ShowMsg(socketSend.RemoteEndPoint.ToString() + "连接成功");
//接收客户端消息线程 Task.Run(() => Recive(socketSend)); } |