用Winform实现Socket网络通信
一、Socket
概念:通常称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或计算机之间的通信;客户端如果要连接服务器,首先要知道服务器的IP地址,但服务器中有很多应用程序,光知道IP地址是不够的,因为客户端不知道连接哪一个程序,所以还需要知道一个服务器的端口号。有了服务器的IP地址和端口号,才能建立Socket连接。
二、传输过程中要有传输协议:
TCP特点:安全稳定,不会发生数据丢失,效率低,要求必须有一个服务器。
经历三次握手过程:1)客户端请求;2)服务器响应;3)客户端得知服务器响应,开始传输。
UDP特点:效率高,但有可能会发生数据丢失(不稳定)。不用经过服务器响应是否有空闲接受消息,自主传输。
举例:视频聊天时,TCP肯定会很清晰,但有可能会卡,因为服务器可能会忙;而UDP不会很清晰,但不会卡,所以视频聊天一般使用UDP协议(参考https://blog.csdn.net/tufeiax/article/details/45591917)
三、具体实现方式
服务器Sever端:
1)首先创建socket对象负责监听,并获取本机IP地址,再创建端口号对象将IP地址传入进去
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(textBox_ip.Text);
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(textBox_port.Text));
2)绑定监听,参数为端口号对象point
socket.Bind(point);
label1.Text = "监听服务已启动!";
3)设置监听以及等待队列
socket.Listen(10);
4)设置接收客户端的连接(注意:要写在while(true)循环中,因为要一直监听,并且创建后台新进程来执行,不止一个客户端要连接服务器,要不断创建负责通信的socket对象socketConnect)