一、Socket网络编程
1、概念:Socket 英文愿意是孔或插座。作为BSD UNIX的进程通信机制,取后一种意思,通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
2、理解:
客户端如果要链接服务器,首先要知道服务器的IP地址,但服务器中有很多应用程序,光知道IP地址是不够的,因为客户端不知道链接哪一个程序,所以还需要知道一个服务器的端口号。有了服务器的IP地址和端口号,才能建立Socket连接。
3、传输的过程中还需要一个协议,协议有两种:TCP、 UDP
TCP特点:安全稳定,不会发生数据丢失,效率低,要求必须有一个服务器。因为要经历三次握手过程:1)客户端请求; 2)服务器响应 3)客户端得知服务器响应。
然后才开始传输
UDP特点:效率高,但有可能会发生数据丢失(不稳定)。不用经过服务器响应是否有空闲接受消息,自主传输
举例:视频聊天时,TCP肯定会很清晰,但有可能会卡,因为服务器可能会忙;而UDP不会很清晰,但不会卡,所以视频聊天一般使用UDP协议
4、下面开始创建服务器:
1) 创建一个负责监听的Socket对象,负责监听某个IP地址和端口号
/当点击监听的时候,在服务器端创建一个负责监听IP地址跟端口号的Socket
Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
2)获取本机的IP地址,并创建端口号对象,将获取的IP地址传参进去。
IPAddress ip = IPAddress.Any; //IPAddress.Parse(txtServer.Text);
//创建端口号
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
3)设置绑定端口号,调用监听Socket对象的绑定方法,参数为前面创建的端口号对象
//监听绑定
socketWatch.Bind(point);
ShowMsg("监听成功");
4)设置监听:调用Socket的监听方法,参数是等待队列
socketWatch.Listen(10); //等待队列
5)创建负责通信的Socket对象,等待客户端的连接。