UDP+TCP

devtools/2024/9/24 1:28:41/

一、UDP协议

        1.recvfrom:recvform(int  sockfd,void *buf,size_t len,int flags,struct  sockaddr         *src_addr,socklen_t *addrlen);

        参数:socket的fd;   保存数据的空间地址 ;  空间大小; 

         默认接收方式(默认阻塞)MSG_DONTWAIT不阻塞方式     没有东西就等待

        用来保存发送方的地址信息;表示发送方发送实际的地址信息大小;

        (如果不关系发送方信息,则后两个参数可以写为NULL)

        成功返回接收到的字节数      失败返回-1

        1)inet_ntoa()将网络的字节序变成字符串类型

        2)ntohs()将网络的端口转换成主机号

        3)当socket创建后没有地址绑定,bind就是绑定地址

        2.bind:int  bind(int sockfd,const struct  sockaddr  *addr,socklen_t   addrlen);

           功能:如果在服务端调用,则表示将参数1相关的文件描述符与参数2指定的接口地址关联

                      用于从该接口接收数据,若在客户端,则表示将数据从参数1所在的描述符中取出并

                      从参数2所在接口设备发送出去(一般客户端可以省略)

           参数:sockfd   通过socket函数创建的文件描述符

                      套接字 id  my_addr  是物理接口的结构体指针

                客户端可以绑定地址,但一般不会绑定

                如果服务器没有绑定地址,那么客户端会找不到

二、TCP

1.客户端过程:

        1)建立连接:socket------bind(可选)------connect(发起连接)

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

        参数:sockfd  本地创建的套接字

                   addr  远程目标主机的地址信息

                   addrlen  地址信息的长度

        成功返回0    失败返回-1

        2)通信过程:read-----write------close

2.服务器过程:

        1)建立连接:socket------bind------listen------accept

        2)通信过程:read-----write------close

3.TCP连接建立

        1)TCP三次握手(建立连接)

        2)TCP四次握手(断开链接)

4.listen :int  listen(int  sockfd,int   backlog)反应监听那个套接字并且建立成功之后返回新的套接字

        参数:当前套接字        同时监听的个数

        成功返回新的套接字    失败返回-1

        listen会标记一下被动的socket(这个socket被用来接收到来的接受请求)

        有两个socket:一是监听的socket,二是处理建立连接的socket

     

      

         


http://www.ppmy.cn/devtools/98738.html

相关文章

数据库和缓存不一致的问题及解决方案

引言 在现代软件架构中,为了提高系统性能和响应速度,通常会采用缓存技术来减少对后端数据库的访问频率。Redis 作为一种高性能的键值存储系统,常常被用作缓存层。然而,这种设计带来了一个挑战——数据一致性问题。本文将深入探讨…

Vue项目创建和使用

快速上手 | Vue.js (vuejs.org) nodejs.org/ vue项目实质上是index.html页面和多个js文件的集合,最终解析后的html和js代码可以由浏览器解析运行: vue项目的创建,需要脚手架工具来搭建; 在编译的源码阶段,文件格式为.…

重磅!2024国自然,放榜!仅11.43%中标率(附近4年对比)

2024国自然放榜 8月23日,国自然基金委正式发布《关于2024年国家自然科学基金集中接收申请项目评审结果的通告》! 今天开始国自然系统将开始陆续放榜,心急的小伙伴也可以直接询问单位的科研处(科研处已经有放榜的第一手消息&…

Spring系列之Spring Cache缓存注解的使用

目录 一、概述 二、缓存注解 1、Cacheable 缓存结果 2、CachePut 更新缓存 3、CacheEvict 清除缓存 4、Caching 组合缓存(不常用) 5、CacheConfig 类级别缓存配置(不常用) 6、CacheResult 设置缓存超时(不常用…

【Kotlin】在Kotlin项目中使用AspectJ

前言 AOP编程在Java开发中是一个非常火热的话题,最著名的库为AspectJ Kotlin项目中,通过Gradle插件,也能够使用该库,这是我们下面讲解的重点 由于AspectJ的原理是在预编译阶段,通过插件修改代码,生成代理…

jenkins最佳实践(一):jenkins安装与部署

各位小伙伴们大家好呀,我是小金,下面我将记录学习jenkins的系列文章与心得,一方面用于博主的自我记录,一方面如果能帮助到正在浏览这篇文章的小伙伴,那更好不过了,本篇文章主要讲述jenkins的安装以及安装je…

培训第三十二天(学习playbook-roles,脚本创建数据库和表,mycat读写分离)

上午 1、roles(角色)介绍 roles(⻆⾊): 就是通过分别将variables, tasks及handlers等放置于单独 的⽬录中,并可以便捷地调⽤它们的⼀种机制。 假设我们要写⼀个playbook来安装管理lamp环境,那么这个 playbook就会写很⻓。所以我们希望把这…

Linux系统之jobs命令的基本使用

Linux系统之jobs命令的基本使用 一、jobs命令介绍二、jobs命令的使用帮助2.1 jobs命令的help帮助信息2.2 jobs命令的语法解释 三、jobs命令的基本使用3.1 运行一个后台任务3.2 列出后台所有的作业3.3 列出进程ID3.4 只列出进程ID3.5 终止后台任务3.6 只显示运行任务3.7 只显示停…