大连企业网站建设北京天仪建设工程质量检测所网站6

web/2025/10/6 9:41:00/文章来源:
大连企业网站建设,北京天仪建设工程质量检测所网站6,如何注册公众号,手机主题制作软件appSocket是什么呢#xff1f; ① Socket通常也称作“套接字”#xff0c;用于描述IP地址和端口#xff0c;是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。 ② Socket是连接运行在网络上的两个程序间的双向通信的端点。 ③ 网络通讯其实指…Socket是什么呢 ① Socket通常也称作“套接字”用于描述IP地址和端口是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。 ② Socket是连接运行在网络上的两个程序间的双向通信的端点。 ③ 网络通讯其实指的就是Socket间的通讯。 ④ 通讯的两端都有Socket数据在两个Socket之间通过IO来进行传输。 或者更通俗的解释 socket ip portSocket原理 基于tcp连接的socket 连接图 流式传输“客户端” 1.socket()函数 2.bind()函数可有可无加上指定传输端口不加随机分配端口 3.connect()函数填写服务端的地址与端口【网络间通信AF_STREAM】或者路径【进程间通信AF_DGRAM】 4.send()函数 5.recv()函数。流式传输“服务端” 1.socket()函数 2.bind()函数必须加上指定传输端口【网络间通信AF_STREAM】或者是路径【进程间通信AF_DGRAM】 3.listen()函数使用isockfd 5.accepc()函数生成新的fdinewfd 6.send()函数inewfd 7.recv()函数inewfd。socket 接口函数 #includesys/socket.h//socket 函数 int socket(int domain, int type, int protocol)第一个参数domain指明了协议族通常用AF_INET、AF_INET6、AF_LOCAL等。AF表示地址族选择 AF_INET 的目的就是使用 IPv4 进行通信。因为 IPv4 使用 32 位地址相比 IPv6 的 128 位来说计算更快便于用于局域网通信。第二个参数type是Socket类型常用的Socket类型我们之前已经介绍过了分别是SOCK_STREAM和SOCK_DGRAM因为我们要写的是TCP Socket编程所以我们使用SOCK_STREAM。第三个参数protocol表示传输协议一般取为0。因为一般情况下有了 domain和 type 两个参数就可以创建套接字了操作系统会自动推演出协议类型除非遇到这样的情况有两种不同的协议支持同一种地址类型和数据传输类型。如果我们不指明使用哪种协议操作系统是没办法自动推演的。example:int sockfd socket(AF_INET, SOCK_STREAM, 0); //建立套接字基于TCPint sockfd socket(AF_INET, SOCK_DGRAM, 0); //基于UDP ////bind 函数 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); 第一个参数sockfd为上一步创建socket时的返回值。第二个参数addr 为 sockaddr 结构体变量的指针。该类型的定义原型如下struct sockaddr_in {short sin_family; //协议族与前面Socket函数中提到的一样我们这里使用AF_INETu_short sin_port; //端口号需要struct in_addr sin_addr; //IP地址需要使用网络序char sin_zero[8]; //没有实际意义,只是为了跟SOCKADDR结构在内存中对齐};第三个参数addrlen为addr 变量的大小可由 sizeof() 计算得出。example:struct sockaddr_in serv_addr; //创建结构体变量servaddr.sin_familyAF_INET; //sin_family指代协议族和前面讲述socket()的第一个参数的含义相同取值也需跟socke函数第一个参数值一样。servaddr.sin_porthtons(2000); //sin_port存储端口号使用网络字节顺序对于htons()函数我们还有单独一章的说明2000这个端口转换为网络字节序列。//理论上端口号的取值范围为是0到65536但0到1023的端口一般由系统分配给特定的服务程序比如Web 服务的端口号为 80所以我们的程序要尽量在 1024~65536 之间分配端口号。servaddr.sin_addr.s_addrinet_addr(127.0.0.1); //将iP地址127.0.0.1也就是本机地址转换为十进制bind(sockfd,(sockaddr*)servaddr,sizeof(servaddr)); // 将套接字绑定到本地地址和端口上。 ////listen函数 int listen(int sockfd, int n);第一个参数为第一步sockfd创建socket时的返回值套接字的描述符。第二个参数n用于指定接收队列的长度也就是在Server程序调用accept函数之前最大允许进入的连接请求数多余的连接请求将被拒绝典型取值为5。example:listen(sockfd,5);//监听sockfd为创建套接字时的返回值。 ////accept函数 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockfd为建立socket函数返回的值。addr为 sockaddr 结构体变量的指针这个参数是指针类型是向外传内容的即addr将在函数调用后填入对方(客户端)的地址信息如对方的IP、端口等。addrlen为 addr变量的大小可由 sizeof() 计算得出。 example:struct sockaddr_in clientaddr//创建客户端地址结构体int aID;//用来接收accept函数返回值aID accept(sockfd,(sockaddr*)clientaddr, sizeof( clientaddr));//等待接收客户连接请求 ////connect函数 int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd:socket文件描述符addr:传出参数返回链接客户端地址信息含IP地址和端口号addrlen:传入传出参数值-结果,传入sizeof(addr)大小函数返回时返回真正接收到地址结构体的大小example:struct sockaddr_in server_addr;int cfd socket(AF_INET, SOCK_STREAM, 0);bzero(server_addr, sizeof(server_addr));server_addr.sin_family AF_INET;inet_pton(AF_INET, CLIENT_IP, server_addr.sin_addr.s_addr);server_addr.sin_port htons(6666);connect(cfd, (struct sockaddr *)server_addr, sizeof(server_addr)); ////recv函数tcp) recvfrom( 通常用于UDP int recv (int fd, void *buf, int n, int flags);第一个参数fd表示连接成功的套接字描述符。注意这一步对于服务端而言是上一步accept的返回值对于客户端而言是connect的返回值并非是第一步socket创建套接字的返回值不要搞混第二个参数buf就是为要接收的数据所在的缓冲区地址也就是一个空的字符数组的首地址这里放结果。第三个参数len为要接收数据的字节数。第四个参数flags为发送数据时的附带标记 一般情况下设置为0。但可以选择下列设置:MSG_DONTROUTE表示不使用指定路由对send、sendto有效MSG_PEEK对recv, recvfrom有效表示读出网络数据后不清除已读的数据MSG_OOB对发送接收都有效表示发送或接受加急数据example:char recBuf[200];//定义一个字符串用来保存客户端发来的数据recv(fd,recBuf,200,0);//接收来自客户端或服务端的数据recv缺省是阻塞函数直到收到信息或出错才会返回 ////send函数(tcp) sendto(通常用于UDP int send (int fd, const void *buf, int n, int flags);第一个参数fd表示连接成功的套接字描述符。注意这一步对于服务端而言是上一步accept的返回值对于客户端而言是connect的返回值并非是第一步socket创建套接字的返回值不要搞混第二个参数buf为要发送的数据所在的缓冲区地址即一个已经存好内容的字符数组第三个参数len为要发送的数据的实际字节数1。第四个参数flags为发送数据时的附带标记 一般情况下设置为0。但可以选择下列设置:MSG_DONTROUTE表示不使用指定路由对send、sendto有效 MSG_PEEK对recv, recvfrom有效表示读出网络数据后不清除已读的数据 MSG_OOB对发送接收都有效表示发送或接受加急数据example:char sendBuf[200];//定义一个数组用来保存发送的数据send(fd,sendBuf,strlen(sendBuf)1,0);//用来发送服务端或客户端的数据与recv同样send函数缺省也是阻塞函数直到发送完毕或出错才会返回。需要注意如果函数返回值与参数len不相等则剩余未发送的信息需要再次发送////close函数 shutdown函数 int close (int fd); int shutdown (int fd, int how) /* how determines what to shut down:SHUT_RD No more receptions;SHUT_WR No more transmissions;SHUT_RDWR No more receptions or transmissions.*/// socket 类似tcp 的工作原理 基于TCP面向连接的socket编程——流式套接字SOCK_STREAM) server.c #include stdio.h #include string.h #include arpa/inet.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include netinet/ip.h#define PORT 23 //端口号 #define BACKLOG 5 //最大监听数int main() {int iSocketFD 0; //socket句柄int iRecvLen 0; //接收成功后的返回值int new_fd 0; //建立连接后的句柄char buf[4096] {0}; //struct sockaddr_in stLocalAddr {0}; //本地地址信息结构图下面有具体的属性赋值struct sockaddr_in stRemoteAddr {0}; //对方地址信息socklen_t socklen 0;//建立socketiSocketFD socket(AF_INET, SOCK_STREAM, 0); if(0 iSocketFD){printf(创建socket失败\n);return 0;} stLocalAddr.sin_family AF_INET; /*该属性表示接收本机或其他机器传输*/stLocalAddr.sin_port htons(PORT); /*端口号*/stLocalAddr.sin_addr.s_addrhtonl(INADDR_ANY); /*IP括号内容表示本机IP*///绑定地址结构体和socketif(0 bind(iSocketFD, (void *)stLocalAddr, sizeof(stLocalAddr))){printf(绑定失败\n);return 0;}//开启监听 第二个参数是最大监听数if(0 listen(iSocketFD, BACKLOG)){printf(监听失败\n);return 0;}printf(iSocketFD: %d\n, iSocketFD); //在这里阻塞知道接收到消息参数分别是socket句柄接收到的地址信息以及大小 new_fd accept(iSocketFD, (void *)stRemoteAddr, socklen);if(0 new_fd){printf(接收失败\n);return 0;}else{printf(接收成功\n);//发送内容参数分别是连接句柄内容大小其他信息设为0即可 send(new_fd, 这是服务器接收成功后发回的信息!, sizeof(这是服务器接收成功后发回的信息!), 0);}printf(new_fd: %d\n, new_fd); iRecvLen recv(new_fd, buf, sizeof(buf), 0); if(0 iRecvLen) //对端关闭连接 返回0{ printf(接收失败或者对端关闭连接\n);}else{printf(buf: %s\n, buf);}close(new_fd);close(iSocketFD);return 0; }client.c #include stdio.h #include string.h #include arpa/inet.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include netinet/ip.h#define PORT 23 //目标地址端口号 #define ADDR 192.168.1.230 //目标地址IPint main() {int iSocketFD 0; //socket句柄unsigned int iRemoteAddr 0;struct sockaddr_in stRemoteAddr {0}; //对端即目标地址信息socklen_t socklen 0; char buf[4096] {0}; //存储接收到的数据//建立socketiSocketFD socket(AF_INET, SOCK_STREAM, 0); if(0 iSocketFD){printf(创建socket失败\n);return 0;} //绑定服务器的ip地址和端口stRemoteAddr.sin_family AF_INET;stRemoteAddr.sin_port htons(PORT);inet_pton(AF_INET, ADDR, iRemoteAddr);stRemoteAddr.sin_addr.s_addriRemoteAddr;//connet()连接方法 传入句柄目标地址和大小if(0 connect(iSocketFD, (void *)stRemoteAddr, sizeof(stRemoteAddr))){printf(连接失败\n);//printf(connect failed:%d,errno);//失败时也可打印errno}else{printf(连接成功\n);recv(iSocketFD, buf, sizeof(buf), 0);//将接收数据打入buf参数分别是句柄储存处最大长度其他信息设为0即可。 printf(Received:%s\n, buf);}close(iSocketFD);//关闭socket return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87837.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做拼团网站关键词搜索排名怎么查看

方法1: 1、常见Runnable对象设置同步代码run运行体 class AutoSaleTicket implements Runnable {private int ticket 20;public void run() {while (true) {// 循环是指线程不停的去卖票// 当操作的是共享数据时,用同步代码块进行包围起来,这样在执行时,只能有一…

查网站流量的网址上海市建设协会考试网站

大白话 Vue 中的keep - alive组件,它的作用是什么?在什么场景下使用? 什么是 keep-alive 组件 在 Vue 里,keep-alive 是一个内置组件,它就像是一个“保存盒”,能把组件实例保存起来,而不是每次…

网站建设与运营推广的回报材料建筑资质最新政策2023年

hive中row_number() rank() dense_rank()的用法 一、函数说明 主要是配合over()窗口函数来使用的,通过over(partition by order by )来反映统计值的记录。 rank() over()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内)dense_rank() …

上海集酷网站河北三河建设厅网站6

模版之过滤器 语法: {{obj|filter__name:param}} 变量名字|过滤器名称:变量 default 如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如: {{ value|default:"nothing"}} length …

溧阳免费做网站wordpress usermeta

dateformat线程这是有关使用Java编程语言时的拟议实践的系列文章的第一篇。 所有讨论的主题均基于用例,这些用例源于电信行业关键任务超高性能生产系统的开发。 在阅读本文的每个部分之前,强烈建议您参考相关的Java API文档以获取详细信息和代码示例。…

品牌手表网站淘宝指数官网的网址

打开控制面板,搜索“服务”,启动vmware authorize service -------解决无法开启虚拟机问题之无法连接MKS 2.虚拟机硬盘扩展为15G------解决安装centos7时出现的“检查存储配置出错”问题 3.硬盘分区----/boot 300mb(不能小于200mb&#xff0…

为公司制作网站深圳网站制作公司深圳网站制作公司

今天接触到个比较好玩的项目 用的是纯htmljs可以将图片里附着文本或图片 经过网页加工就可以将一些隐秘的信息传入到图片里面去了。 这个功能类似于用一种笔在纸上写字,这种字在正常情况下看不出来,而经过泼水之后就会有字的显现。 这种隐写功能也具…

做视频教学网站免费的域名注册网站

279.完全平方数 力扣题目链接(opens new window) 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n ,返回和为 n 的完全平方数的 最少数…

大学网站建设方案一级a做爰片免费网站国语版的

一.什么是cpu上下文切换 CPU 上下文切换是操作系统在多任务环境下管理进程的一项关键任务。在现代计算机系统中,有多个进程同时运行,每个进程都需要一定的 CPU 时间来执行其任务。由于 CPU 在某一时刻只能执行一个进程的指令,因此操作系统需…

淮南微信网站建设大数据营销案例有哪些

文章目录 1.FFMPEG利用命令行将mp4转yuv4202.ffmpeg将mp4解析为yuv数据2.1 核心api: 3.SDL2进行yuv绘制到屏幕3.1 核心api 4.完整代码5.效果展示 本项目采用生产者消费者模型,生产者线程:使用ffmpeg将mp4格式数据解析为yuv的帧,消费者线程&am…

网站建设制作设计优化汕头网站搜索优化

前言1111 FPGA调试需要抓取特定信号,一个直观的思路是:保存抓取的信号,事后分析/ 或者 导出实测数据,用作后续算法仿真验证。 本文简要记录数据的导出及读取。 一、信号导出 (1)把想要观测的信号线加入在线…

杭州高端网站设计深圳市营销型网站

点击右上方红色按钮关注“web秀”,让你真正秀起来前言在《Nodejs WebSocket简单介绍及示例 - 第一章》中简单的介绍了,Nodejs WebSocket的使用方法及作用,今天就用它来搭建一个简单的聊天室功能。1、NodejsWebSocket创建后台服务器功能 2、…

深圳专业优定软件网站建设怎样在网上注册公司

一、先下载引导程序 下载地址VS VisualStudio官网 在这个页面翻到最下面 在这里下载需要的版本 下载引导程序 二、下载离线安装包 写一个批处理文件&#xff08;vs.bat&#xff09; 命令格式如下 <vs引导程序exe> --layout <离线安装包下载的路径> --add <功能…

网站建设理论知识网站集约化建设的意义

在.net平台下&#xff0c;有大量的技术让你创建一个HTTP服务&#xff0c;像Web Service&#xff0c;WCF&#xff0c;现在又出了Web API。在.net平台下&#xff0c;你有很多的选择来构建一个HTTP Services。我分享一下我对Web Service、WCF以及Web API的看法。 Web Service 1、它…

网站背景修改网站春节放假

原标题&#xff1a;机房机柜尾纤布线图片 机房布线维护整理评价一个工人的机柜布线水平&#xff0c;总的来说还是主要看他打标签的熟练度、重视度、清晰度、整洁度。工具&#xff1a;理线夹&#xff0c;理线器&#xff0c;理线架&#xff0c;桥架固定器&#xff0c;线卡&#x…

可信网站认证哪里有忻州网站建设网站推广

进程的状态 进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。在三态模型中&#xff0c;进程状态分为三个基本状态&#xff0c;即运行态&#xff0c;就绪态&#xff0c;阻塞态。 一个进程从创建而产生至撤销而消亡的整个生命期间&#xff0c;…

网站开发培训实训手机网站备案

docker的资源控制 对容器使用宿主机的资源进行限制。 三种控制方向&#xff1a;CPU 内存 磁盘I/O docker使用linux自带的功能cgroup&#xff1b;control groups是linux内核系统提供的一种可以限制记录&#xff0c;隔离进程所使用的物理资源机制。 docker借助此…

广州高档网站建设wordpress 仪表盘界面

本文框架 1. 前言2.几个时间参数含义2.1 P2Client与P2Server2.2 P2*Client与P2*Server2.3 P3Client_Phys与P3Client_Func2.4 S3Client与S3Server 1. 前言 本系列Autosar 诊断入门介绍&#xff0c;会详细介绍诊断相关基础知识&#xff0c;如您对诊断实战有更高需求&#xff0c;…

南昌网站建设公司服务器克隆网站首页做单页站几个文件

基于SpringBoot的网上超市系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;用户、管理员 管理员&#xff1a;个人中心、用户管理、商品分类…