《网络编程》-第2章 – 套接字类型与协议设置

本文介绍了网络编程中socket函数的使用,包括套接字的domain、type和protocol参数。详细讲解了面向连接的TCP套接字与面向消息的UDP套接字的特性和应用场景,并探讨了协议在数据收发中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、复习 socket() 函数

int socket( int domain, int type, int protocol );

domain:套接字使用的协议族

一般用AF_INET IPv4互联网协议族

​ AF_INET6 IPv6互联网协议族

type:套接字数据传输类型信息

SOCK_STREAM 面向连接的TCP套接字

特征:

传输过程中数据不会消失。

按序传输数据。

传输的数据不存在数据边界( Boundary )。

=》可靠的、按顺序传递的、基于字节的面向连接的数据传输方式的套接字。

在SOCK_STREAM 中,read函数和write函数的调用次数并无太大意义。

SOCK_DGRAM 面向消息的UDP套接字

特征:

​ 强调快速传输而非传输顺序;

​ 传输的数据可能丢失也可能损毁;

​ 传输的数据有数据边界;

​ 限制每次传输的数据大小;

=》 不可靠的、不按序传递的、以数据的高速传输为目的的套接字。

Protocol 计算机间通信中使用的协议信息

一般就写0。

TCP套接字

int tcp_socket = socket(PF_INET,socK_STREAM,IPPROTO_TCP);

参数PF_INET指IPv4网络协议族,SOCK_STREAM是面向连接的数据传输。满足这2个条件的协议只有IPPROTO_TCP,因此可以如下调用socket函数创建套接字,这种套接字称为TCP套接字。

UDP套接字

int udp_socket = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);

SOCK_DGRAM指的是面向消息的数据传输方式,满足上述条件的协议只有IPPROTO_UDP。因此,可以如下调用socket函数创建套接字,这种套接字称为UDP套接字。

2、课后习题

1)什么是协议?在收发数据中定义协议有何意义?

协议就是为了完成数据交换而定好的约定。因此,定义协议意味着对数据传输所必需的的承诺进行定义。

2)面向连接的TCP套接字传输特性有3点,请分别说明。

传输过程中数据不会丢失

按序传输数据

传输的数据不存在数据边界(Boundary)

5) 何种类型的套接字不存在数据边界?这类套接字接收数据时需要注意什么?

连接指向型TCP套接字不存在数据边界。因此输入输出函数的响应次数不具有意义。重要的不是函数的响应次数,而是数据的收发量。因此,必须将传输数据的量和接收数据的量制作成编码,保证发送数据的量和接收数据的量是一致的,特别要注意是制作依赖函数响应次数判断代码。

代码入口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值