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

化工网站模板百度指数人群画像

化工网站模板,百度指数人群画像,临沂罗庄做网站公司,咸阳网站建设培训学校基于socket通讯的方式&#xff0c;无论用http或者udp或者自定义的协议&#xff0c;程序结构都是类似的。这个以UDP协议为例简要说明。 #include <stdio.h> // 标准输入输出库 #include <sys/types.h> // 提供了一些数据类型&#xff0c;如ssize_t #include <sy…

基于socket通讯的方式,无论用http或者udp或者自定义的协议,程序结构都是类似的。这个以UDP协议为例简要说明。

#include <stdio.h> // 标准输入输出库
#include <sys/types.h> // 提供了一些数据类型,如ssize_t
#include <sys/socket.h> // 提供socket编程的接口
#include <netinet/in.h> // 提供IPv4和IPv6地址的结构体定义
#include <arpa/inet.h> // 提供网络地址转换的函数,如inet_pton和inet_ntop(注意:这里应该是<arpa/inet.h>的拼写错误,正确的是<arpa/inet.h>,但您已经写对了)
#include <unistd.h> // 提供对POSIX操作系统API的访问,如close函数
#include <stdlib.h> // 标准库,提供内存分配、程序退出等函数
#include <sys/stat.h> // 提供对文件状态的操作,本程序中未使用
#include <fcntl.h> // 提供对文件控制的操作,如文件描述符的设置,本程序中未使用
#include <string.h> // 提供字符串处理的函数,如bzero#define N 64 // 定义缓冲区的大小int main(int argc, char const *argv[]) // 程序的主入口
{int sockfd; // 声明socket文件描述符sockfd = socket(AF_INET, SOCK_DGRAM, 0); // 创建一个UDP socketif(sockfd < 0) // 检查socket是否创建成功{perror("sock err"); // 如果创建失败,打印错误信息return -1; // 并返回-1表示错误}// 绑定套接字(ip+port)struct sockaddr_in addr; // 声明一个IPv4地址的结构体addr.sin_family = AF_INET; // 设置地址族为IPv4addr.sin_port = htons(atoi(argv[2])); // 将命令行参数转换为整数,并转换为网络字节序后设置为端口号// 自动绑定所有的本机网卡的地址addr.sin_addr.s_addr = INADDR_ANY; // 设置IP地址为INADDR_ANY,表示绑定到所有可用的网络接口int addrlen = sizeof(addr); // 获取地址结构体的长度if(bind(sockfd, (struct sockaddr *)&addr, addrlen) < 0) // 绑定socket到指定的地址和端口{perror("bind err"); // 如果绑定失败,打印错误信息return -1; // 并返回-1表示错误}ssize_t len; // 声明一个变量来存储接收到的数据长度char buf[N] = {0}; // 声明并初始化一个缓冲区来存储接收到的数据struct sockaddr_in cliaddr; // 声明一个结构体来存储客户端的地址信息// cliaddr接收客户端的地址while (1) // 进入一个无限循环来等待客户端的数据{bzero(buf, N); // 清空缓冲区len = recvfrom(sockfd, buf, N, 0, (struct sockaddr *)&cliaddr, &addrlen); // 从socket接收数据if(len > 0) // 如果成功接收到数据{printf("recv data=%s\n", buf); // 打印接收到的数据sendto(sockfd, buf, len, 0, (struct sockaddr *)&cliaddr, addrlen); // 将接收到的数据发送回客户端(注意:这里应该使用len而不是N)}}// 关闭socket(注意:由于有无限循环,这行代码实际上永远不会被执行)close(sockfd); // 关闭socket以释放资源return 0; // 程序正常结束
}

程序功能

这个程序实现了一个简单的UDP服务器,它监听一个指定的端口,接收来自客户端的数据,并将接收到的数据原封不动地发送回客户端(回显服务器)。

程序结构

  1. 初始化:创建socket,设置地址和端口,绑定socket。
  2. 接收数据:进入一个无限循环,等待并接收来自客户端的数据。
  3. 处理数据:打印接收到的数据,并将数据发送回客户端。
  4. 关闭socket(实际上不会被执行):在循环结束后关闭socket。

UDP发送和接收函数的参数

  • recvfrom()函数:
    • sockfd:socket文件描述符。
    • buf:指向存储接收数据的缓冲区的指针。
    • len:缓冲区的大小。
    • flags:标志位,通常设置为0。
    • src_addr:指向存储发送方地址信息的结构体的指针。
    • addrlen:指向存储地址结构体长度的变量的指针。
  • sendto()函数:
    • sockfd:socket文件描述符。
    • buf:指向要发送的数据的缓冲区的指针。
    • len:要发送的数据的长度(注意:这里应该使用实际接收到的数据长度,而不是缓冲区的大小)。
    • flags:标志位,通常设置为0。
    • dest_addr:指向存储接收方地址信息的结构体的指针。
    • addrlen:地址结构体的长度。

其中:

sockaddr_in 结构体在 IPv4 网络编程中用于表示一个 Internet 地址。这个结构体定义在 <netinet/in.h> 头文件中(在 POSIX 兼容的系统中),并且它通常用于 bind()connect()sendto()recvfrom() 等网络相关的系统调用中,以指定或接收网络地址信息。

 sockaddr_in 结构体的定义:

struct sockaddr_in {sa_family_t    sin_family; // 地址族,对于 IPv4 来说是 AF_INETuint16_t       sin_port;   // 端口号,使用网络字节序(大端模式)struct in_addr sin_addr;   // IPv4 地址,也使用网络字节序// 在某些实现中,可能有一个用于填充的数组,以确保结构体大小与 sockaddr 一致// char        sin_zero[8]; // 这通常用于保持结构体大小的一致性,但现代代码通常不直接使用它
};
  • sin_family:这是一个 sa_family_t 类型的字段,用于指定地址族。对于 IPv4 地址,它应该被设置为 AF_INET

  • sin_port:这是一个 uint16_t 类型的字段,用于指定端口号。端口号应该以网络字节序(大端模式)存储,这通常意味着在将主机字节序(小端模式或大端模式,取决于具体的系统架构)的端口号传递给网络之前,需要使用 htons() 函数进行转换。

  • sin_addr:这是一个 struct in_addr 类型的字段,它包含了一个 IPv4 地址。IPv4 地址也应该以网络字节序存储。struct in_addr 通常定义为一个包含单个 uint32_t 类型字段 s_addr 的结构体,用于存储 32 位的 IPv4 地址。

  • sin_zero:在某些实现中,sockaddr_in 结构体可能包含一个名为 sin_zero 的字符数组字段,用于填充,以确保结构体的大小与更通用的 sockaddr 结构体一致。然而,在现代的网络编程实践中,这个字段通常不被直接使用,而且可能在一些实现中根本不存在。如果你的系统定义中包含了这个字段,你通常不需要关心它,只需要确保在初始化 sockaddr_in 结构体时将其清零(尽管这通常不是必需的,因为系统调用通常只关心 sin_familysin_port, 和 sin_addr 字段)。

在使用 sockaddr_in 结构体时,你需要确保正确地设置 sin_familysin_port, 和 sin_addr 字段,并且如果 sin_zero 字段存在,也最好将其清零(尽管这通常不是错误源)。然后,你可以将这个结构体的地址作为参数传递给网络相关的系统调用。

 

http://www.laogonggong.com/news/35467.html

相关文章:

  • 分销体系搭建惠州百度seo在哪
  • 专门做素菜的网站外链网
  • 凉山州建设网站有什么平台可以发布推广信息
  • 自建网站服务器备案电脑培训班一般要学多久
  • js特效网站展示站长工具官网
  • 做元器件上什么网站旺道智能seo系统
  • 如何建设局域网网站抖音搜索优化
  • 洛阳 网站建设 大师字画西安网站公司推广
  • 借钱软件推广微信hyhyk1网站优化排名资源
  • 长治网站建设哪家好网络营销的十种方法
  • 应当首先满足广州seo学徒
  • 做网站优化最快的方式seo免费推广
  • net新闻网站开发武汉全网推广
  • 专门做萝莉视频网站2022年明星百度指数排行
  • 浙江华企做网站广州信息流推广公司
  • 清河做网站哪里好关键词网站排名查询
  • 建设企业网站综合考虑百度收录入口
  • 广东做网站公司营销推广方案怎么写
  • 天猫网站建设的目标seo自动优化软件
  • 网站建设费可以进广告宣传费吗做专业搜索引擎优化
  • 青岛网站排名优化公司哪家好郑州seo技术代理
  • 广州建设网站大数据分析
  • 网站建设案例怎么样今天国际新闻
  • 广西高端网站建设360优化大师安卓下载
  • 做网站一般多少网店推广的渠道有哪些
  • 澳门网站建设免费企业网站模板源码
  • 苍南县住房和城乡规划建设局网站重庆seo整站优化报价
  • wordpress 邮件认证seo优化外包
  • 书生商友网站建设百度公司官网招聘
  • 网站费用多少ueeshop建站费用