前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >IPC|网络套接字

IPC|网络套接字

作者头像
heidsoft
发布2022-04-18 19:25:59
发布2022-04-18 19:25:59
1.1K00
代码可运行
举报
运行总次数:0
代码可运行

当客户需要发送一个很短小的查询请求给服务器,并且期望接收到一个短小的响应时,

我们一般就使用由UDP提供的服务。如果服务器处理客户请求的时间足够短,

服务器就可以通过一次处理一个客户请求的方式提供服务,从而允许操作系统将

客户进入的请求放入队列。这简化了服务器程序的编写。

为了访问由UDP提供的服务,你需要像以前一样使用套接字和close系统调用,但你需要用两个

数据报专用的系统调用sendto 和 recvfrom来代替原来使用在套接字上的read和write调用

套接字网络IPC接口,进程能够使用该接口和其他进程通信。通过该接口,其他进程运行位置是透明的,

它们可以在同一台计算机上也可以在不同的计算机上。同样接口既可以用于计算机间通信,有可以用于计算机内

通信。

套接字是通信端点的抽象,与应用程序要使用文件描述符访问文件一样,访问套接字也需要套接字描述符。

代码语言:javascript
代码运行次数:0
复制
#include <sys/socket>
int socket(int domain, int type, int protocol);

返回值:若成功则返回文件(套接字)描述符,如果出错则返回 -1

参数domain 域确定通信的特性,包括地址格式。

表示各个域都以AF_开头,意指地址族(address family)

AF_INET ipv4 因特网域

AF_INET6 ipv6 因特网域

AF_UNIX UNIX 域

参数type 确定套接字的类型,进一步确定通信特征

SOCK_DGRAM 长度固定的,无连接的不可靠报文传递

SOCK_RAW IP协议的数据接口

SOCK_SEQPACKET 长度固定/有序/可靠的面向连接报文传递

SOCK_STREAM 有序/可靠/双向的面向连接字节流

参数protocol,通常是0,表示按给定的域和套接字类型选择默认协议

当对同一域和套接字类型支持多个协议时,可以使用protocol 参数选择一个

特定协议。在AF_INET 通信域中套接字类型SOCK_STREAAM 的默认协议时TCP(传输控制协议)

在AF_INET 通信域中套接字类型SOCK_DGRAM的默认协议时UDP(用户数据报协议)

SOCK_RAW 套接字提供一个数据报接口用于直接访问下面的网络层(在AF_INET 域中为IP)

使用这个接口时,应用程序负责构造自己的协议首部。这是因为传输协议(TCP和UDP)被绕过了

当创建一个原始套接字时需要超级用户权限,用以防止恶意程序绕过内建安全机制来创建报文。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云数智圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档