TCP编程

因为最近学习《UNIX Network Programming》,所以小结一下TCP编程的基本方法。

如图所示。在没有错误发生的情况下,服务器要bind,listen。然后通过accept返回可以读写的套接字。客户端相对简单,只要connect就可以获得可以读写的套接字。当然实际编写中,每一步都应该检查有没有返回error。而且,服务器端应该比客户端早开始。

然后读写套接字可以直接使用write和read函数。以前单看这两个函数的时候没觉得什么,但是现在学过一下UNIX编程的话就知道,read和write是标准的系统调用之一,就是用来读写文件。函数的其中一个参数是descriptor(描述符),0表示stdin,1表示stdout,2表示stderr。平时打开文件的系统调用也返回desciptor,也可以用在这里。因此,套接字可以直接用在这里又一次表明,UNIX把什么东西都看成文件,这种思想算是UNIX的哲学之一吧。

最后是其中一方主动执行close函数,一般是客户端。因为主动的一方需要进入TIME_WAIT状态。但也有很多协议是服务器端先close,比如HTTP服务。

这次看完一二章之后,最大的收获是明确了TCP的11个状态,以及原来可以用netstat命令查看,又丰富了一些基本知识。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s