#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <errno.h>
int main()
{
int sockfd,opt = 1;
uint32_t len;
struct sockaddr_in myaddr,cliaddr;
char buf[1024]={0};
int ret = 0;
sockfd = socket(AF_INET,SOCK_DGRAM,0);
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
memset(&myaddr,0,sizeof(myaddr));
myaddr.sin_family = AF_INET;
inet_pton(AF_INET,"127.0.0.1",&myaddr.sin_addr.s_addr);
myaddr.sin_port = htons(20001);
memset(&cliaddr,0,sizeof(cliaddr));
cliaddr.sin_family = AF_INET;
inet_pton(AF_INET,"127.0.0.1",&cliaddr.sin_addr.s_addr);
cliaddr.sin_port = htons(20000);
ret = bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr));
if(ret < 0)
{
perror("bind");
return;
}
REPEAT:
memset(buf,0,sizeof(buf));
printf("please input:\n");
scanf("%s",buf);
len = sizeof(cliaddr);
ret = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr*)&cliaddr,len);
printf("send buf is %s,ret is %d\n",buf,ret);
while(1)
{
memset(buf,0,sizeof(buf));
printf("recving buf\n");
ret = recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr*)&myaddr,&len);
printf("recv buf is %s\n",buf);
goto REPEAT;
}
close(sockfd);
return 0;
}