【网编】——UDP编程

宏观操作

服务器:socket创套接字---bind绑定连接---recvfrom接收数据/sendto发送数据

客户端:socket创套接字---sendto发送数/recvfrom接收数据---close关闭套接字

函数

recv

ssize_t recvfrom ( int sockfd , void * buf , size_t len , int flags , struct sockaddr * src_addr , socklen_t * addrlen );

recv(sock套接字,buf地址,buf大小,0,发送端结构体的指针,指针大小)

返回值:

成功:接收字节个数

失败:-1

0:客户端退出=quit

sendto

ssize_t sendto ( int sockfd , const void * buf , size_t len , int flags , const struct sockaddr * dest_addr , socklen_t addrlen );

sendto(sock套接字,buf地址,buf大小,0,接收端结构体的指针,指针大小)

返回值:

成功:接收字节个数

失败:-1

UDP客户端

头文件:

#include <sys/types.h> /* See NOTES */

#include <sys/socket.h>

#include <errno.h>

#include<stdio.h>

#include <netinet/in.h>

#include <netinet/ip.h> /* superset of previous */

#include <arpa/inet.h>

#include <string.h>

#include <unistd.h>

#include <stdlib.h>

cs 复制代码
//创建套接字
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sock<0)
{ perror("sock err");return -1;}printf("sock ok");
struct sockaddr_in shiny;
//发送
    struct sockaddr_in addr;
    addr.sin_family=AF_INET;
    addr.sin_port=htons(atoi(argv[2]))
    addr.sin_addr.s_addr=inet_addr(argv[1]);
socklen_taddrlen=sizeof(addr);
#define N 64
    char buf[N]={"helloworld"};
   sendto(sockfd,buf,N,0,(struct sockaddr*)&shiny,&addr,addrlen);


//关闭文件描述符
    close(sockfd);
    return 0;
}
相关推荐
JiaWen技术圈43 分钟前
HTTP3 与 DTLS 的关系
网络协议
源远流长jerry2 小时前
Linux 网络虚拟化深度解析:从 veth 设备对到容器网络实战
linux·运维·服务器·网络·性能优化·php
CC城子3 小时前
EtherCAT从站ssc V5.12源码研究与记录(二)
网络·ethercat
星恒讯工业路由器3 小时前
SDN:让网络变得更智能、更灵活、更可编程
网络·物联网·信息与通信·sdn
TOWE technology3 小时前
同为科技雷电防护产品,构筑全场景电气安全防线
网络·科技·安全·防雷产品·防雷工程·防雷施工·防雷设计
Sagittarius_A*3 小时前
H3CSE 高性能园区网:VLAN原理与MVRP协议
网络·计算机网络·h3cse
@insist1234 小时前
信息安全工程师-测评核心知识框架与关键流程(下篇)
网络·安全·软考·信息安全工程师·软件水平考试
JunLa4 小时前
L angGraph vs 链式调用
java·网络·数据库
DianSan_ERP4 小时前
抖店订单接口中消费者信息加密解密机制与安全履约全解析
前端·网络·数据库·后端·安全·团队开发·运维开发
難釋懷4 小时前
Redis网络模型-Redis是单线程的吗?为什么使用单线程
网络·数据库·redis