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

外贸手工做兼职的网站专业网站优化哪家好

外贸手工做兼职的网站,专业网站优化哪家好,公司做网站该注意哪些,网站升级通知在 UDP 通信中,recvfrom 和 sendto 函数中的地址参数起着至关重要的作用。 以下是对这两个函数中地址参数的作用、所属方以及缺失地址时的后果的详细解释。 recvfrom 函数 int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_add…

UDP 通信中,recvfromsendto 函数中的地址参数起着至关重要的作用。

以下是对这两个函数中地址参数的作用、所属方以及缺失地址时的后果的详细解释。

recvfrom 函数

int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);
  • src_addr:指向 struct sockaddr 的指针,用于存储发送方的网络地址信息。
  • addrlen:指向 socklen_t 的指针,用于指定 src_addr 的大小。

作用

  • 获取发送方地址recvfrom 函数不仅接收数据,还会将发送方的网络地址信息存储在 src_addr 指向的结构体中。这使得接收方可以知道数据的来源。
  • 后续通信:接收方可以使用这个地址信息向发送方发送响应或其他消息。

没有地址的情况

  • 如果不提供 src_addraddrlen 参数(即传递 NULL0),recvfrom 仍然可以接收数据,但接收方无法获取发送方的地址信息。这意味着接收方无法向发送方发送任何响应或后续消息。

sendto 函数

int sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);
  • dest_addr:指向 struct sockaddr 的指针,包含接收方的网络地址信息。
  • addrlen:指定 dest_addr 的大小。

作用

  • 指定接收方地址sendto 函数通过 dest_addr 参数指定消息的接收方。这是 UDP 通信中消息能够正确发送到目标地址的关键。
  • 无连接通信UDP 是无连接的,每次发送消息都需要明确指定目标地址,sendto 函数通过 dest_addr 实现这一点。

没有地址的情况

  • 如果不提供 dest_addraddrlen 参数(即传递 NULL0),sendto 函数无法知道消息的接收方,因此无法发送消息。这会导致发送操作失败,通常会返回一个错误码,如 EDESTADDRREQ(目标地址所需)。

总结

  • recvfrom 中的地址:用于存储发送方的地址信息,使接收方能够知道数据来源。没有地址参数仍然可以接收数据,但无法获取发送方的地址,也无法向发送方发送响应。
  • sendto 中的地址:用于指定消息的接收方地址。没有地址参数,消息无法发送,发送操作会失败。

简单的UDP服务器和客户端通信

UDP服务器

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;struct sockaddr_in servaddr, cliaddr;socklen_t len = sizeof(struct sockaddr_in);char buffer[BUFFER_SIZE];// 创建UDP套接字if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");exit(EXIT_FAILURE);}// 设置服务器地址memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);// 绑定套接字到指定端口if (bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}printf("Server waiting for clients...\n");while (1) {// 接收消息并获取客户端地址int n = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&cliaddr, &len);buffer[n] = '\0';printf("Received from client: %s\n", buffer);// 打印客户端地址printf("Client address: %s:%d\n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port));// 向客户端发送响应sendto(sockfd, "Message received", 16, 0, (const struct sockaddr *)&cliaddr, len);}close(sockfd);return 0;
}

UDP客户端

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>#define PORT 8080
#define BUFFER_SIZE 1024int main() {int sockfd;struct sockaddr_in servaddr;char buffer[BUFFER_SIZE];// 创建UDP套接字if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");exit(EXIT_FAILURE);}// 设置服务器地址memset(&servaddr, 0, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_port = htons(PORT);servaddr.sin_addr.s_addr = inet_addr("192.168.209.128");printf("Enter message to send to server: ");scanf("%s", buffer);// 向服务器发送消息sendto(sockfd, buffer, strlen(buffer), 0, (const struct sockaddr *)&servaddr, sizeof(servaddr));struct sockaddr_in addr;socklen_t len = sizeof(addr);// 接收服务器响应int n = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&addr, &len);buffer[n] = '\0';// 打印addr的IP地址和端口号printf("Addr address: %s:%d\n", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));printf("Server response: %s\n", buffer);close(sockfd);return 0;
}

在这里插入图片描述
在这里插入图片描述


文章转载自:

http://Nx9qKwOW.jwwfk.cn
http://PFSC5zVs.jwwfk.cn
http://JANryDX5.jwwfk.cn
http://k2bF1WBY.jwwfk.cn
http://UoOBk5yL.jwwfk.cn
http://qHvV8ZZw.jwwfk.cn
http://LBcBoUwp.jwwfk.cn
http://O2cLGxN5.jwwfk.cn
http://t7akGBxW.jwwfk.cn
http://BXSzwbfY.jwwfk.cn
http://w2v09NvM.jwwfk.cn
http://cctR8orR.jwwfk.cn
http://Hd6JJJky.jwwfk.cn
http://mbtzQryH.jwwfk.cn
http://Bg2DitLT.jwwfk.cn
http://Kf7y1PDZ.jwwfk.cn
http://IQpEnxt3.jwwfk.cn
http://xcw4NIlw.jwwfk.cn
http://hPuoWlSW.jwwfk.cn
http://ny2S0dM9.jwwfk.cn
http://1rxvKiyL.jwwfk.cn
http://EpF6nPZE.jwwfk.cn
http://5yjl4miE.jwwfk.cn
http://Y0Gu5LGm.jwwfk.cn
http://cZOvl20c.jwwfk.cn
http://UfEKANyu.jwwfk.cn
http://gG84yo2f.jwwfk.cn
http://8sFDPACO.jwwfk.cn
http://fRZA90Lq.jwwfk.cn
http://bAMLDcZg.jwwfk.cn
http://www.dtcms.com/wzjs/661192.html

相关文章:

  • 银河麒麟软件下载网站互联网金融型网站开发
  • 哪家建设公司网站丰县网站建设推广
  • 网站上的用户注册怎么做的怎么做网站推
  • 最好的dm单网站建设做的比较早的海淘网站
  • jsp网站开发文献有经验的南昌网站建设
  • php做网站流程上海app开发公司
  • 海丰县建设局网站做网站用什么ide
  • 做网站把自己做死wordpress网站回调域
  • 青海建设银行的官方网站有网站前台如何做后台
  • 网站建设的总结100字2024年小微企业100至300万
  • 企业网站推广哪家好html5网站模板
  • 文昌网站建设 myvodo网站开发后所有权
  • 天津营销网站建设梅江区建设局网站
  • 湖州外贸网站建设死链接对网站的影响
  • 网站app建设图片素材部署wordpress站点
  • 企业网站的作用有哪些深圳建设网站和公众号
  • 装饰网站卧室做炕百度专业版简历
  • 上海建设网站公司哪家好中国食品网
  • 有名设计网站做网站的公司多吗
  • 中国建设银行理财网站深圳市建设工程合同备案网站
  • 做旅游去哪个网站找图上海建设银行长宁区各分行网站
  • 教做世界美食的网站方维服务客户类型
  • 大学生毕业设计网站cms wordpress 企业
  • 怎么样利用一些网站开发客户自己安装wordpress
  • 9e做网站wordpress屏蔽国外访问
  • 免费的cms视频网站模板网页制作图片教程
  • 电子商务网站建设与维护管理百度广告位价格
  • 深圳市建设局官方网站我的个人网页设计效果图
  • 2017免费网站空间网站建设创新互联
  • 爱站网怎么用做网站中app客户端