Socket通信过程原理及相关系统调用
2015-08-04王进文
王进文

摘 要:通过介绍Socket的基本组成结构及其发挥的作用,论述Socket通信的整个过程并用C语言加以简要实现,以阐明Socket通信过程原理及相关系统调用。
关键词:Socket;网络通信;进程通信
中图分类号:TP311 文献标识码:A
1 Socket基本组成结构
Socket是相同主机进程之间或者不同主机进程之间进行通信的主流手段之一,两台计算机之间的网络通信可以通过在各自的系统中创建一个Socket,进而利用它来实现相互之间的通信。
那Socket究竟是什么呢?一个基本的Socket就是由本机IP,本机进程端口,目的IP,和目的进程端口,以及输入输出缓冲组成的一个数据结构。其中前四个属性分别用来标识本机信息和目的计算机的信息,输入输出缓冲用来暂存保存通信的数据。
2 Socket通信连接步骤
Socket连接建立之前主要进行两项工作,第一项是连接建立前的两个Socket的初始化工作,第二个是两台计算机通信时的“三路握手”。下面详细说明这两个过程(假设两台通信的计算机为客户端-服务器模型,调用中用到的参数,请自行查看相关API):
(1)两个Socket的初始化。
服务器端
首先,用C语言通过系统调用socket()函数来创建套接口。通过以下程序段便可以建立一个用TCP的Socket:
int listensockfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)
其次,通过系统调用int bind ()函数来初始化Socket中的本地IP地址和本地端口号。通过以下语句,便可以初始化服务器端的Socket:
bind( listensockfd, (struct sockaddr*) &saServer, sizeof(saServer));
最后,我们通过系统调用listen()函数来将已经绑定了本机IP地址和程序端口号的Socket的状态由主动(positive)转换为被动(passive)(只有处于被动的Socket才会接受对方的信息)。并调用accept()函数来获取已经准备好的套接字准备收取数据。……
