网络编程操作—函数
一、socket创建套接字
#include <sys/types.h> //头文件
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
三个参数:domain、type、protocol
1.domain:域名,领域,定义域(中文解释)
本地域通信 [ AF_UNIX, AF_LOCAL (Local communication) ]
网络域通信 [ AF_INET (IPv4 Internet protocols)]
2.type:类型(中文解释)
面向数据报:SOCK_DGRAM
面向字节流:SOCK_STREAM
3.protocol:协议(中文解释)
设置为0;
4.强行记下来
此函数写了不下5遍,一直忘了写:给自己做个笔记
int opt=1;
setsockopt(_listensock,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)); //如果程序挂了,则立刻可以按原来端口重新启动
二、bind绑定
#include <sys/types.h> //头文件
#include <sys/socket.h>#include <netinet/in.h> //后两个是结构体的头文件
#include <arpa/inet.h>
int bind(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);
参数:
1.sockfd:套接字
使用:socket的返回值->套接字
2.struct sockaddr结构体
struct sockaddr_in:网络通信使用此结构体:遵守IP协议
绑定的套路:
struct sockaddr_in local;
memset(&local, 0, sizeof local);
local.sin_family = AF_INET;
local.sin_port = htons(port);
local.sin_addr.s_addr=ip.empty()?INADDR_ANY:inet_addr(ip.c_str());
int n = bind(listensock, (struct sockaddr *)&local, sizeof(local));
2.1大小端转化函数
#include <arpa/inet.h>
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
这些函数名很好记,h表示host,n表示network,l表示32位长整数,s表示16位短整数。
例如htonl表示将32位的长整数从主机字节序转换为网络字节序,例如将IP地址转换后准备发送。
如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回;
如果主机是大端字节序,这些 函数不做转换,将参数原封不动地返回。
2.2socklen_t addrlen 结构体的长度
三、listen
监听:将套接字(文件描述符)变成监听状态;监视是否有链接进入;
// 开始监听 socket (TCP, 服务器 )int listen(int socket, int backlog);
参数
1.socket:套接字(文件描述符);将创建的套接字传入;
2.backlog:监听的队列;比如有大量的链接进入,只能连1个链接;剩余的没连上的‘就会等待被链接;
四、accept
// 接收请求 (TCP, 服务器 )int accept(int socket, struct sockaddr* address,socklen_t* address_len);
五、connect
// 建立连接 (TCP, 客户端)
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
相关文章:
网络编程操作—函数
一、socket创建套接字 #include <sys/types.h> //头文件 #include <sys/socket.h> int socket(int domain, int type, int protocol); 三个参数:domain、type、protocol 1.domain:域名,领域,定义域(中文解释&…...
博客摘录「 GD32的flash读、擦除、写操作」2024年9月2日
关于GD32的Flash读、擦除、写操作,以下是基于当前可获得信息(截至2024年9月2日)的详细解答: 一、GD32 Flash的基本特性 存储空间:GD32的Flash存储空间大小因型号而异,可支持从几KB到几MB不等的存储容量。页大小:Flash按页组织,不同型号的GD32其页大小可能不同。例如,…...
【性能优化】低配starRocks常驻内存优化
背景说明 由于服务器的实际资源小于starRocks官方的配置,导致starRocks在无任务的情况下,常驻内存偏高,可用于查询的资源变小。 官方文档 实际部署的集群一般是4C8G和8C16G,be的配置不达标 为了解决单次查询内存不足的问题&…...
科研绘图系列:R语言树结构聚类热图(cluster heatmap)
文章目录 介绍加载R包导入数据数据预处理画图修改图形导出数据系统信息介绍 热图结合树结构展示聚类结果通常用于展示数据集中的模式和关系,这种图形被称为聚类热图或层次聚类热图。在这种图中,热图部分显示了数据矩阵的颜色编码值,而树结构(通常称为树状图或聚类树)则显…...
微信小程序操作蓝牙
主要流程: 1.初始化蓝牙适配器openBluetoothAdapter,如果不成功就onBluetoothAdapterStateChange监听蓝牙适配器状态变化事件 2.startBluetoothDevicesDiscovery开始搜寻附近的蓝牙外围设备 3.onBluetoothDeviceFound监听寻找到新设备的事件,…...
Python爱心射线(完整代码)
目录 系列目录 写在前面 完整代码 下载代码 代码分析 写在后面 系列目录 序号直达链接表白系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3...
努比亚 Z17 NX563J Root 教程三方REC刷写工具教程
教程:1,自用成功 正常链接列表 adb devices 检查fastboot链接列表 fastboot devices 解锁设备fastboot oem nubia_unlock NUBIA_NX563J 我用的解锁设备是:fastboot flashing unlock 1.打开开发者选项。将OEM解锁的按钮打开 2.下载附件努…...
python 02 List
Python 1-14 列表 第一课 1437. 是否所有 1 都至少相隔 k 个元素 class Solution:def kLengthApart(self, nums: List[int], k: int) -> bool:cnt k # 处理第一个 1for i, x in enumerate(nums):if x 1:if cnt < k: return Falsecnt 0 # 遇到 1 从新记数else: cnt …...
【秋招笔试】09.28科大讯飞秋招(已改编)-研发岗
🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 本次的三题全部上线…...
[SAP ABAP] 锁对象
在SAP中使用锁对象,用于避免在数据库中插入或更改数据时出现不一致的情况 1.创建锁对象 数据准备 学校表(ZDBT_SCH_437) 使用事务码SE11创建锁对象 点击"锁对象"单选按钮,输入以E开头的锁定对象的名称,然后点击创建按钮 锁对象名…...
Docker快速部署RabbitMq教程
1、拉取RabbitMQ镜像 docker pull rabbitmq:management RabbitMQ Management 插件为 RabbitMQ 提供了一个基于 Web 的用户界面(Management UI),允许你通过浏览器来监控、管理 RabbitMQ 实例。 因为docker默认是使用的是Docker Hub的官方镜…...
解决银河麒麟V10中/data目录执行权限问题
解决银河麒麟V10中/data目录执行权限问题 1、问题描述2、解决方案步骤一:编辑fstab文件步骤二:重启系统步骤三:验证更改 3、总结 💖The Begin💖点点关注,收藏不迷路💖 在使用银河麒麟桌面操作系…...
画两个数的平方和的曲线
代码1: from mpl_toolkits import mplot3d import numpy as np import matplotlib.pyplot as plt# Creating dataset x np.outer(np.linspace(-3, 3, 32), np.ones(32)) y x.copy().T # transpose z (x **2 y **2 )# Creating figure fig plt.figure(figsize …...
问:进程/线程上下文切换场景及相关概念?
进程、线程以及上下文切换是操作系统和并发编程中不可或缺的概念。这些概念不仅理论意义重大,而且在实际应用中起着至关重要的作用。掌柜将通过具体场景,探讨它们之间的关联以及上下文切换过程。_ 一、进程与线程 进程(有时也称为任务&…...
神经网络(一):神经网络入门
文章目录 一、神经网络1.1神经元结构1.2单层神经网络:单层感知机1.3两层神经网络:多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…...
卸载apt-get 安装的PostgreSQL版本
文章目录 卸载apt-get 安装的PostgreSQL版本查找已安装的PostgreSQL包卸载PostgreSQL:检查并删除残留文件验证卸载 卸载apt-get 安装的PostgreSQL版本 卸载通过apt-get安装的PostgreSQL 就版本,可以按照以下步骤进行。 查找已安装的PostgreSQL包 在卸…...
低代码用户中心:构建高效便捷的用户管理平台
什么是低代码用户中心? 低代码用户中心是一种利用低代码开发平台构建的用户管理系统,允许企业快速创建、部署和管理用户信息、权限及互动记录。通过可视化界面和预置组件,企业可以在短时间内实现灵活的用户管理解决方案,而无需编…...
3款免费的GPT类工具
前言 随着科技的飞速发展,人工智能(AI)的崛起与发展已经成为我们生活中不可或缺的一部分。它的出现彻底改变了我们与世界互动的方式,并为各行各业带来了前所未有的便利。 一、Kimi 网址:点我前往 国产AI模型Kimi是一…...
Mixture-of-Experts (MoE): 条件计算的诞生与崛起【上篇】
大型语言模型(LLM)的现代进步主要是缩放定律的产物[6]。 假设模型是在足够大的数据集上训练出来的,那么随着底层模型规模的增加,我们会看到性能的平滑提升。 这种扩展规律最终促使我们创建了 GPT-3 以及随后的其他(更强…...
【算法】分治:归并排序之LCR 170.交易逆序对的总数(hard)
系列专栏 双指针 模拟算法 分治思想 目录 1、题目链接 2、题目介绍 3、解法 4、代码 1、题目链接 LCR 159. 库存管理 III - 力扣(LeetCode) 2、题目介绍 在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
