前面讲完了TCP和UDP协议,还没有上手过,这一节咱们讲讲基于TCP和UDP协议的Socket编程。
在讲TCP和UDP协议的时候,我们分客户端和服务端,在写程序的时候,我们也同样这样分。
Socket这个名字很有意思,可以作插口或者插槽讲。虽然我们是写软件程序,但是你可以想象为弄一根网线,一头插在客户端,一头插在服务端,然后进行通信。所以在通信之前,双方都要建立一个Socket。
在建立Socket的时候,应该设置什么参数呢?Socket编程进行的是端到端的通信,往往意识不到中间经过多少局域网,多少路由器,因而能够设置的参数,也只能是端到端协议之上网络层和传输层的。
在网络层,Socket函数需要指定到底是IPv4还是IPv6,分别对应设置为AF_INET和AF_INET6。另外,还要指定到底是TCP还是UDP。还记得咱们前面讲过的,TCP协议是基于数据流的,所以设置为SOCK_STREAM,而UDP是基于数据报的,因而设置为SOCK_DGRAM。
基于TCP协议的Socket程序函数调用过程
两端创建了Socket之后,接下来的过程中,TCP和UDP稍有不同,我们先来看TCP。
TCP的服务端要先监听一个端口,一般是