当前位置: 首页 > news >正文

TCP套接字【网络】

文章目录

创建套接字:(TCP/UDP)

int socket(int domain, int type, int protocol);

inet_aton,将字符串IP转换成整数IP

int inet_aton(const char *cp, struct in_addr *inp);

监听套接字:(TCP,服务器)

int listen(int sockfd, int backlog);

TCP服务器在与客户端进行网络通信之前,服务器需要先获取到客户端的连接请求,获取连接的函数叫做accept

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

参数说明:

  • sockfd:特定的监听套接字,表示从该监听套接字中获取连接。
  • addr:对端网络相关的属性信息,包括协议家族、IP地址、端口号等。
  • addrlen:调用时传入期望读取的addr结构体的长度,返回时代表实际读取到的addr结构体的长度,这是一个输入输出型参数

return val :

  • 获取连接成功返回接收到的套接字的文件描述符,获取连接失败返回-1,同时错误码会被设置。

如何理解accept函数返回的套接字?
*

telnet 是一个基于网络的命令行工具,用于远程登录到另一台计算机

inet_ntop,将整数IP转换成字符串IP

  const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
  • af:地址族,指定要转换的地址类型。常见的值有 AF_INET(IPv4)和 AF_INET6(IPv6)。

  • src:指向包含原始网络地址的缓冲区的指针。

  • dst:指向目标缓冲区的指针,该缓冲区将接收转换后的文本表示。如果 dst 为 NULL,则 inet_ntop 将分配一个足够大的缓冲区,并返回指向该缓冲区的指针。

  • size:目标缓冲区的大小

建立连接:(TCP,客户端)

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

inet_pton,将一个点分十进制的IP地址字符串转换为网络字节顺序的数值形式

 int inet_pton(int af, const char *src, void *dst);

af:指定地址族,可以是 AF_INET(IPv4)或 AF_INET6(IPv6)。
src:指向一个以 null 结尾的字符串,包含要转换的IP地址。
dst:指向一个用于存储转换后的数值地址的缓冲区。

多进程版本关于sockfd
在这里插入图片描述

代码

单进程版本
多进程版本
线程版本

http://www.lryc.cn/news/438279.html

相关文章:

  • 【devops】devops-git之github使用
  • GPT对话知识库——串口通信的数据的组成?起始位是高电平还是低电平?如何用代码在 FreeRTOS 中实现串口通信吗?如何处理串口通信中的数据帧校验吗?
  • 从头开始学MyBatis—02基于xml和注解分别实现的增删改查
  • AI音乐创作的新时代:从创意到旋律的智能化转型
  • Spring Boot集成Akka remoting快速入门Demo
  • JVM 调优篇7 调优案例1-堆空间的优化解决
  • 文件格式转换:EXCEL和CSV文件格式互相转换
  • 基于协同过滤的北京森林公园推荐---附源码74454
  • 002 JavaClent操作RabbitMQ
  • lablelme标注的数据转成YOLO v8 格式
  • 【linux】cat 命令
  • 速通sass基础语法
  • Vue: watch5种监听情况
  • Android 车联网——汽车系统介绍(附2)
  • C++ 链表
  • 中国初创公司数量下降了98%
  • 【SSRF漏洞】——http协议常见绕过
  • [网络][CISCO]CISCO_华为网络设备端口镜像配置
  • 第二十五章 添加数字签名
  • GHOST重装后DEF盘数据救援指南
  • 使用blender快速制作metahuman面部以及身体绑定教程
  • OpenHarmony鸿蒙( Beta5.0)智能窗户通风设备开发详解
  • pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名
  • C# 中的多线程同步:原子变量、原子操作、内存顺序和可见性
  • 视图(mysql)
  • elementui组件el-upload实现批量文件上传
  • 【JAVA入门】Day45 - 压缩流 / 解压缩流
  • Qt_自定义信号
  • 【运维方案】某系统运维需求方案参考(doc全原件2024)
  • Linux环境使用Git同步教程