linux UDP类型的socket通信

数据主动发出方: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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值