读书笔记]插座功能
最编程
2024-03-20 08:46:15
...
socket函数
简介
应用
程序调用socket函数来创建一个能够进行
网络通信的
套接字。
1
2
3
4
5
|
/* 头文件 */
#include <sys/types.h>
#include <sys/socket.h>
/* 函数原型 */
int
socket(
int
domain,
int
type,
int
protocol);
|
第一个
参数指定应用
程序使用的
通信协议的协议族,对于TCP/IP协议族,该参数置AF_INET;
第二个
参数指定要创建的
套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM、原始套接字SOCK_RAW(WinSock接口并不适用某种特定的协议去
封装它,而是由
程序自行处理数据包以及协议首部);
第三个
参数指定应用
程序所使用的
通信协议。此
参数可以指定单个协议系列中的不同
传输协议。在Internet通讯域中,此
参数一般取值为0,系统会根据
套接字的类型决定应使用的
传输层协议。
该函数如果调用成功就返回新创建的
套接字的描述符,如果失败就返回INVALID_SOCKET。(Linux下失败返回-1)
套接字描述符是一个整数类型的值。每个进程的进程空间里都有一个
套接字描述符表,该表中存放着套接字描述符和套接字
数据结构的对应关系。该表中有一个字段存放新创建的
套接字的描述符,另一个字段存放套接字
数据结构的
地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。每个进程在自己的进程空间里都有一个
套接字描述符表但是套接字数据结构都是在
操作系统的
内核缓冲里。
创建流套接字的例子
1
2
3
|
struct
protoent *ppe;
ppe=getprotobyname(
"tcp"
);
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);
|
推荐阅读
-
SpringBoot + 交易钩子功能,打造高效支付系统!
-
货运代理系统有哪些功能?什么样的货运代理系统更适合中小货运代理公司?
-
MySQL 8.0 新增功能:解释分析 SQL 执行过程
-
具有高级图像后处理功能(三维重建+复原)的成像医疗 PACS 系统源代码
-
通过 Python 脚本操作 Excel 实现批量替换功能
-
读书笔记 - 认知觉醒:伴随身体的学习方法论
-
新手组合 - StreamPark + Paimon 的最佳实践 - Paimon 的核心功能
-
Java 22 已发布,所有新功能尽在一篇文章中
-
VMware ESXi 安装 iStoreOS(无直通功能)
-
带有平移缩放旋转功能的 opengl 矩阵变换