第二章 套接字类型与协议设置

来源:互联网 发布:mac怎么更新阿里旺旺 编辑:程序博客网 时间:2024/06/05 03:23

《TCP/IP网络编程》 尹圣雨

P26~P32

协议:计算机之间对换必备通信规则。协议就是为了完成数据交换而定好的约定。


第一章 理解网络编程和套接字


创建套接字 

#include<sys/socket.h>int socket(int domain ,int type, int protocol);//成功时返回文件描述符,失败返回-1

domain:套接字使用的协议族信息;type:套接字数据传输类型信息;protocol:通信使用的协议信息。


注意:(1)Protocol family协议族,只关注 PF_INET(IPv4互联网协议族)。另外套接字实际采用的最终协议信息是通过socket函数的第三个参数传递的。在指定的协议族范围内通过第一个参数决定第三个参数。

(2)套接字类型Type,即套接字的数据传输方式,通过函数的第二个参数的传递,才能决定创建的套接字的数据传输方式。

1)面向连接的套接字SOCK_STREAM(可靠、按序传递、基于字节的面向连接的数据传输方式的套接字)

传输方式特征:传输过程中数据不会丢失;按序传输数据;传输的数据不存在数据边界;套接字连接必须一一对应。

收发数据的套接字内部有缓冲buffer,即字节数组。

在面向连接的套接字中,read函数和write函数的调用次数并无太大意义。

面向连接的套接字只能与另外一个同样特性的套接字连接


2)面向消息的套接字SOCKET_DGRAM(不可靠、不按次序传递、以数据的高速传输为目的的套接字)

传输方式特征:强调快速传输而非传输顺序;数据可能丢失或损毁;传输数据有数据边界;限制每次传输的数据大小。

传递前两个参数即可创建套接字,所有大部分情况下可以向第三个参数传递0。

注意 IPv4与网络地址系统相关。


TCP套接字:int tcp_socket=socket(PF_INET,SOCK_STREAM,IPPRO_TCP); 

UDP套接字:int udp_socket=socket(PF_INET,SOCK_DGRAM,IPPRO_UDP);





原创粉丝点击