windows下的网络通信主要有基于TCP和UDP的网络编程,主要通过windows sockets来实现通信。
基于TCP的SOCKET编程是面向连接的,需要先行进行链接,也就是著名的“三次握手”,而UDP的SOCKET编程时无连接的,不需数据确认,具有实时性。
下面是基于TCP的SOCKET编程代码:
服务器端 (server)的代码:
客服端(client)的代码:
先行启动服务器端,然后客户端发出信息,运行结果:
服务器端不关闭,多次运行客户端:
归纳一下基于TCP的SOCKET编程步骤:
服务器端:
<1>WSAStartup加载套接字库,进行版本协商;
<2>创建SOCKET关键字
<3>将套接字bind到一个本地地址和端口;
<4>将套接字设为listen模式;
<5>等待客户端请求,当有请求到来时,accept连接,返回一个新的对应于此次连接的套接字;
<6>进行send 和 recv;
<7>关闭套接字。
客户端:
<1>WSAStartup加载套接字库,进行版本协商;
<2>创建SOCKET关键字
<3>向服务器发送connect请求;<4>和服务器间进行send和recv通信;
<5>关闭套接字,WSACleanup();
下面用一个基于字符界面的聊天程序来介绍基于UDP的SOCKET编程:
服务器端代码:
客户端代码:
运行结果:
可以发现,由于UDP是无连接的,所以不需要先进行连接确认,相对简便很多。