网络编程套接字API
一. linux平台
1.创建套接字
成功返回文件描述符,失败返回-1
int socket (int __domain, int __type, int __protocol) ;
2.套接字绑定IP地址和端口号
成功返回0,失败返回-1
int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
3.开启监听套接字
成功返回0,失败返回-1
int listen (int __fd, int __n) __THROW;
4.受理连接请求
成功返回文件描述符,失败返回-1int accept (int __fd, __SOCKADDR_ARG __addr,socklen_t *__restrict __addr_len);
5.发送数据
成功返回写入的字节数,失败返回-1
ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
6.接收数据
成功返回接收的字节数(若遇到文件尾返回0),失败返回-1
ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
7.关闭套接字
成功返回0,失败返回-1
int close (int __fd);
8.优雅的关闭套接字
extern int shutdown (int __fd, int __how) __THROW;
9.发送连接请求
成功返回0,失败返回-1
int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
10.域名获取IP地址
extern struct hostent *gethostbyname (const char *__name);
11.IP地址获取域名
extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,int __type);
12.获取套接字的可选项
int
extern int getsockopt (int __fd, int __level, int __optname,void *__restrict __optval,socklen_t *__restrict __optlen) __THROW;
13.设置套接字的可选项
/* Set socket FD's option OPTNAME at protocol level LEVELto *OPTVAL (which is OPTLEN bytes long).Returns 0 on success, -1 for errors. */
extern int setsockopt (int __fd, int __level, int __optname,const void *__optval, socklen_t __optlen) __THROW;
二. Windows平台
1.Winsock库的初始化
进行Winsock编程时,首先必须调用WSAStartup函数,设置程序中用到的Winsock版本,并初始化相应版本的库。
成功返回0,失败返回非0的错误代码值
int
WSAAPI
WSAStartup(_In_ WORD wVersionRequested,_Out_ LPWSADATA lpWSAData);
2.Winsock库的注销
进行Winsock编程时,首先必须调用WSAStartup函数,设置程序中用到的Winsock版本,并初始化相应版本的库。
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
WSACleanup(void);
1.创建套接字
成功返回套接字句柄,失败返回INVALID_SOCKET
SOCKET
WSAAPI
socket(_In_ int af,_In_ int type,_In_ int protocol);
2.套接字绑定IP地址和端口号
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
bind(_In_ SOCKET s,_In_reads_bytes_(namelen) const struct sockaddr FAR * name,_In_ int namelen);
3.开启监听套接字
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
listen(_In_ SOCKET s,_In_ int backlog);
4.受理连接请求
成功返回套接字句柄,失败返回INVALID_SOCKET
SOCKET
WSAAPI
accept(_In_ SOCKET s,_Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR * addr,_Inout_opt_ int FAR * addrlen);
5.发送数据
成功返回发送字节数,失败返回SOCKET_ERROR
int
WSAAPI
send(_In_ SOCKET s,_In_reads_bytes_(len) const char FAR * buf,_In_ int len,_In_ int flags);
6.接收数据
成功返回接收字节数(收到EOF时为0),失败返回SOCKET_ERROR
int
WSAAPI
recv(_In_ SOCKET s,_Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf,_In_ int len,_In_ int flags);
7.关闭套接字
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
closesocket(_In_ SOCKET s);
8.优雅关闭套接字
int
WSAAPI
shutdown(_In_ SOCKET s,_In_ int how);
9.发送连接请求
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
connect(_In_ SOCKET s,_In_reads_bytes_(namelen) const struct sockaddr FAR * name,_In_ int namelen);
10.域名获取IP地址
struct hostent FAR *
WSAAPI
gethostbyname(_In_z_ const char FAR * name);
11.地址获取域名
struct hostent FAR *
WSAAPI
gethostbyaddr(_In_reads_bytes_(len) const char FAR * addr,_In_ int len,_In_ int type);
12.获取套接字的可选项
int
WSAAPI
getsockopt(_In_ SOCKET s,_In_ int level,_In_ int optname,_Out_writes_bytes_(*optlen) char FAR * optval,_Inout_ int FAR * optlen);
13.设置套接字的可选项
int
WSAAPI
setsockopt(_In_ SOCKET s,_In_ int level,_In_ int optname,_In_reads_bytes_opt_(optlen) const char FAR * optval,_In_ int optlen);
相关文章:
网络编程套接字API
一. linux平台 1.创建套接字 成功返回文件描述符,失败返回-1 int socket (int __domain, int __type, int __protocol) ;2.套接字绑定IP地址和端口号 成功返回0,失败返回-1 int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);3.开启…...
数字藏品的价值和意义
2022年以来,数字藏品概念在国内火热起来。从年初的《关于防范 NFT相关金融风险的倡议》到8月份央行数字货币 DCEP的正式面世,从中国香港首个“NFT”艺术品在香港拍卖市场成交到国内多家互联网大厂推出数字藏品平台,越来越多的企业开始试水数字…...
Unity物理系统脚本编程(上)
一、获取刚体组件Rigidbody 当一个物体挂载了刚体时,即可在脚本中获取该物体的刚体组件,代码如下 Rigidbody rigid; void Start() { rigidGetComponent<Rigidbody>(); } 一般将刚体变量命名为rigid并定义为一个字段,方便复用. 二、施…...
Java基础(十七)File类与IO流
1. java.io.File类的使用 1.1 概述 File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新…...
跑步课程导入能力,助力科学训练
HUAWEI Health Kit为开发者提供用户自定义的跑步课程导入接口,便于用户在华为运动健康App和华为智能穿戴设备上查看来自生态应用的训练课表,开启科学、适度的运动训练。 跑步课程导入能力支持生态应用在获取用户的华为帐号授权后,将跑步课程…...
MySQL---8、创建和管理表
1、基础知识 1.1 一条数据存储的过程 创建数据库-->确认字段-->创建数据表-->插入数据1.2 标识符的命名规则 1、数据库名、表名不得超过30个字符,变量名限制为29个 2、必须只能包含A-Z、a-z、0-9,、_共63个字符 3、数据库名、表名、字段名等对象名中间不…...
图像分类简单介绍
文章目录 图像分类简单介绍什么是图像分类图像分类的背景和意义传统的图像分类方法基于深度学习的图像分类方法总结 图像分类简单介绍 图像分类是计算机视觉领域的一个基本任务,其目标是将输入的图像分配给某个预定义的类别(即标签)。在本教…...
很多博主用Markdown格式文章?直呼真不错!
概述 Markdown 是一种轻量级标记语言,它可以使我们专注于写作内容,而不用过多关注排版,很多博主、作家等都用它来撰写文章~ 本文将给各位小伙伴介绍 Markdown 语法的使用,本篇文章索奇就是用的纯 markdown 语法来写的~ 标题 一级…...
【2023/05/07】汇编语言
Hello!大家好,我是霜淮子,2023倒计时第2天。 Share Stray birds of summer come to my window to sing and fly away. And yellow leaves of autumn,which have no songs,flutter and full there with a sigh. 译文: 夏天的鸟&…...
AI 生成第3篇测试文章:怎么编写测试计划?
背景 在软件开发过程中,测试是十分重要的环节,测试计划是测试的基础和重要的组成部分。一个完善的测试计划能够指导测试工作,明确测试范围和要求,提高测试效率,保证软件质量和可靠性。本文将从测试计划的定义、编写步…...
怎么洗稿容易过稿-在线洗稿软件
自媒体洗稿软件 即使您是一位优秀的自媒体写作人员,也难免遇到让人头疼的撰写问题,例如无法处理大量原始文本、需要手动删除冗余信息、缺少时间针对每篇文章进行深入修改等问题。但是,现在有了我们的一款自媒体洗稿软件,您再也不需…...
图书馆客流人数统计分析系统方案
智慧客流人数统计分析系统可以帮助图书馆管理者更好地管理人群流量。系统能够自动统计区域内的人流量高峰期,并通过数据分析提供更加合理的管控,从而提区域内人群流动性,避免拥堵的情况。 AI客流视觉监控 客流量管控分析系统意义 讯鹏客流量管…...
linux命令之crontab详解
crontab 提交和管理用户的需要周期性执行的任务 更多linux命令详解:linux命令在线工具 补充说明 crontab命令 被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工…...
浅谈一下接口工具(jmeter、postman、swagger等)
一、接口都有哪些类型? 接口一般分为两种:1.程序内部的接口 2.系统对外的接口 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把 数据库共享给你,他只能给你提供一个他们写好的方法来获取…...
面试题:react、 vue中的key有什么作用? (key的内部原理)
面试题:react、 vue中的key有什么作用? (key的内部原理) 1.虚拟DOM中key的作用: key是虚拟DOM对象的标识,当状态中的数据发生变化时,Vue会根据【新数据】生成【新的虚拟DON】,随后Vue进行【新虚拟DOM】与【旧虚拟DOM】的差异比较࿰…...
C++之继承
目录 一、继承的概念及定义 1.1继承的概念 1.2继承的定义 1.2.1继承的格式 1.2.2继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 4.派生类的默认成员函数 五、继承与友元 六、继承与静态成员 七、菱形继承及菱形虚拟继承 7.1菱形继承的问…...
轻松掌握!Pandas的数据添加技巧,3秒学会更高效的方法
在Pandas中,如果你想高效地向一个DataFrame添加一行数据,千万不要使用.append()方法!因为这种方法需要创建新的对象然后再赋值,效率较低,尤其是DataFrame较大时。 本文将介绍3种Pandas添加一行数据更高效的方法&#x…...
层次结构工程命名建议
对于这种多层次的结构,我们可以采用一些通用的命名方式来描述不同的层次。以下是一种可能的方式,仅供参考: 第一层:模块/模块组件 可以采用名词或形容词名词的方式来命名,例如: Action: 动作Behavior: 行…...
Google Play应用广告该如何运作
Google 应用广告是一种付费广告渠道,可以帮助我们把应用推向特定的目标受众。比如可以使用应用安装广告,用来吸引用户安装我们的应用,我们可以选择手动设置出价和定位,或使用 Google Ads 自动设置目标和出价。 Google 在创建和投…...
Java版电子招投标系统源码之了解电子招标投标全流程
随着各级政府部门的大力推进,以及国内互联网的建设,电子招投标已经逐渐成为国内主流的招标投标方式,但是依然有很多人对电子招投标的流程不够了解,在具体操作上存在困难。虽然各个交易平台的招标投标在线操作会略有不同࿰…...
龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...
基于Uniapp的HarmonyOS 5.0体育应用开发攻略
一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...
