该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include#include#include#include#include#include
#define ECHOMAX 255int main(int argc,char *argv[])
{ int sock;
struct sockaddr_in echoServAddr;
struct sockaddr_in echoClntAddr;
unsigned short echoServPort;
unsigned int CliAddrLen;
char echoBuffer[ECHOMAX];
int recvMsgSize;
if(argc!=2) { printf("Usage:%s \n",argv[0]); exit(1); }
echoServPort=atoi(argv[1]);
if((sock=socket(PF_INET,SOCK_DGRAM,0))<0)
printf("socket() failed.\n");
memset(&echoServAddr,0,sizeof(echoServAddr));
echoServAddr.sin_family=AF_INET;
echoServAddr.sin_addr.s_addr=htonl(INADDR_ANY);
echoServAddr.sin_port= htons(echoServPort);
if((bind(sock,(struct sockaddr *) &echoServAddr,sizeof(echoServAddr)))<0)
printf("bind() failed.\n");
for(;;)
{ CliAddrLen=sizeof(echoClntAddr);
if((recvMsgSize=recvfrom(sock,echoBuffer,ECHOMAX,0,(struct sockaddr *) &echoClntAddr,&CliAddrLen))<0)
printf("recvfrom() failed.\n");
printf("Handling client %s\n",inet_ntoa(echoClntAddr.sin_addr));
if((sendto(sock,echoBuffer,recvMsgSize,0,(struct sockaddr *) &echoClntAddr,sizeof(echoClntAddr)))!=recvMsgSize)
printf("sendto() sent a different number of bytes expected.\n");}
}