TCP/IP网络编程学习(2):套接字类型及协议设置(socket函数)

本文详细介绍了套接字函数socket的使用,包括参数含义、协议族的选择(如PF_INET)、套接字类型(如SOCK_STREAM和SOCK_DGRAM)以及如何根据需求创建面向连接的TCP套接字和面向消息的UDP套接字。通过实例展示了如何使用socket函数创建不同类型的网络连接。
摘要由CSDN通过智能技术生成

进一步学习套接字函数socket

创建套接字函数socket

#include <sys/socket.h>
int socket(int domain, int type, int protocol);
//成功时返回文件描述符,失败时返回-1。
domain: 套接字中使用的协议族( Protocol Famjly )信息。
type  : 套接字数据传输类型信息。
protocol : 计算机间通信中使用的协议信息 。

协议族(Protocol Family, PF)分为以下几类。

在这里插入图片描述
重点IPv4(PF_INET)协议。另外,套接字中实际采用的最终协议信息是通过socket函数的第三个参数传递的 。在指定的协议族范围内通过第一个参数决定第三个参数 。

套接字类型(Type)

套接字类型指 的是套接字的数据传输方式,通过socket函数的第二个参数传递,只有这样才能决定创建的套接字的数据传输方式 。 两种常见的数据传输方式。

  1. 面向连接的套接字(SOCK_STREM)(TCP)
    收发数据的套接字内部有缓冲 (buffer ),简言之就是字节数组 。 通过套接字传输的数据将保存到该数组 。 因此,收到数据并不意味着马上调用read函数。 只要不超过数组容量 ,则有可能在数据填充满缓冲后通过 1 次read函数调用读取全部,也有可能分成多次read函数调用进行读取。也就是说,在面向连接的套接字中, read函数和write函数的调用次数并无太大意义 。所以说面向连接的套接字不存在数据边界 。
  2. 面向消息的套接字(SOCK_DGREM)(UDP)

协议的最终选择

同一协议族中存在多个数据传输方式相同的协议需要指定第三个参数,否则指定为0。

举例:
创建IPv4协议族中面向连接的套接字
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) 。满足前两个条件的只有IPPROTO_TCP因此第三个参数也可以指定为0。TCP套接字。

创建IPv4协议族中面向消息的套接字
sock = socket(PF_INET, SOCK_DGREM, IPPROTO_TCP) 。满足前两个条件的只有IPPROTO_UDP因此第三个参数也可以指定为0。UDP套接字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值