socket通讯的本质是两个进程之间的通信。
我们使用的socket其实是应用层进程通信,既然是应用层,那就是在传输层之上,所以,可标识应用层某个应用进程的方式是 传输层标识(协议类型)+ 传输层端口号
如 TCP 8080 (web浏览器)
使用TCP socket 通信,通信双发必须要打开自己的通信通道,为了完成这个功能,是调用
bind(socket, (conststructsockaddr *)&addr,sizeof(addr));
方法,来进行本地socket的的资源申请,本地地址的申请。
如果是服务端,我们需要给出一个确定的端口号,如果是客户端,我们只需要给出
INADDR_ANY 表示随意都可以,这种情况下由系统随机分配,因为通常情况下客户端并不关心自己端口号是多少。
有了本地通道,此时socket可以与外界通信,可以主动去连接其它进程,也可以等待别人连接过来。
如果要等待别人的连接
那么调用;
accept(serverSocket, (structsockaddr *)&peeraddr, &addrLen);
如果是需要主动连接别人则调用.
err=connect(fd, (structsockaddr *)&peeraddr, addrLen);
accept之后就完成了连接的建立。此时3次握手已经完成,可以进行
发消息 send() ,也可以进行接收消息 recv()