1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| int main() { int sfd=socket(AF_INET<SOCK_DGRAM,0); if(-1==sfd) { perror("socket"); exit(-1); } struct sockaddr_in saddr; bzero(&saddr,sizeof(saddr)); saddr.sin_family=AF_INET; saddr.sin_port=htons(2345); saddr.sin_addr.s_addr=INADDR_ANY; if(bind(sfd,(struct sockaddr*)&saddr,sizeof(struct sockaddr))==-1) { perror("bind"); close(sfd); exit(-1); } char buf[512]={0}; while(1) { struct sockaddr_in fromaddr; bzero(&fromaddr,sizeof(fromaddr)); int fromaddrlen=sizeof(struct sockaddr); if(recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&fromaddr,&fromaddrlen)==-1) { perror("recvfrom); close(sfd); exit(-1); } printf("receive from %s:%d,the message is %s\n",inet_ntoa(fromaddr.sin_addr),ntohs(fromaddr.sin_port),buf); sendto(sfd,"world",6,0,(struct sockaddr*)&fromaddr,sizeof(struct sockaddr)); } close(sfd); }
|
预览: