在这篇文章中我介绍了关于tcp网络套接字,关于网络套接字编程的问题我会再次讲述一点东西,然后介绍关于守护进程的知识。
1. 关于网络套接字编程的一些问题
在进行套接字编程时我们一定是得先有套接字,并且我们在使用socket的一些接口时,通常需要将套接字转化为网络序列:
但是我们在进行网络数据的传输的时候,例如在tcp协议下,我们使用的接口是read/write,那么为什么不需要把通过这些IO接口获取到的数据也进行转化为网络序列或者本地序列呢?这是因为关于网络IO的这些接口内部就已经做了网络序列和本地序列的转化了。
还有一点,我的前几篇关于网络博客中提到过udp协议是面向数据报的,tcp协议是面向字节流的,这一点该如何进行简单的体会呢?
我们在使用udp协议进行网络IO时,使用的接口是sendto/recvfrom,它的特点是我们在使用sendto发送数据之后,必须得等对面使用recvfrom接收之后我们才能继续使用sendto发消息,我们能明显地感觉到数据和数据之间是有边界的。
但是在tcp协议中,我们发现我们的客户端可以向socket文件中进行多次写入,而服务端可以一下子就把这一堆数据给读走了,这就好像你拿容器接水流一样,你并不知道即将到来的水流有多少,但是你可以停住它们(不读取),你用碗接它就是一碗水,你用杯子