数据主动发出方:send.c
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#include <stdlib.h>
#define MYPORT 8887
char *SERVERIP = "127.0.0.1" ;
int main() {
struct sockaddr_in servaddr ; // IPv4地址族
memset(&servaddr , 0 ,sizeof(servaddr)) ;
servaddr.sin_family = AF_INET ; // 设置地址类型
servaddr.sin_port = htons(MYPORT) ;
servaddr.sin_addr.s_addr = inet_addr(SERVERIP) ;
int sockfd = socket(PF_INET, SOCK_DGRAM , 0) ;
if(sockfd < 0)
{
printf("get sockfd err\n") ;
exit(1) ;
}
char sendbuf[8000] = {0} ;
char recvbuf[8000] = {} ;
int recv_len = 0, send_len = 0 ;
memset(sendbuf,'a',sizeof(sendbuf)) ;
int i = 0 ;
while(1){
send_len = sendto(sockfd , sendbuf , 8000 , 0 ,\
(struct sockaddr*)&servaddr , sizeof(servaddr)) ;
printf("send %d : %d \n" ,i++ , send_len) ;
}
return 0;
}
数据接收方:recv.c
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
int main() {
struct sockaddr_in my_addr ;
memset(&my_addr , 0 , sizeof(my_addr)) ;
my_addr.sin_family = AF_INET ;
my_addr.sin_port = htons(8887) ;
my_addr.sin_addr.s_addr = inet_addr("0.0.0.0") ;
int sockfd = socket(PF_INET, SOCK_DGRAM , 0) ;
bind(sockfd , (struct sockaddr*)&my_addr , sizeof(my_addr)) ;
int recv_len = 0 ;
char recvbuf[8000] ;
int i = 0 ;
while(1){
recv_len = recvfrom(sockfd,recvbuf,8000, 0 ,NULL,NULL) ;
printf("recv %d : %d\n", i++ ,recv_len) ;
}
return 0;
}