还是实验的作业~
一共需要两个文件,这是client
1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <arpa/inet.h> 4 #include <stdlib.h> 5 #include <string.h> 6 #include <unistd.h> 7 8 #define ECHOMAX 255 9 10 int main(int argc, char *argv[]) { 11 int sock; 12 struct sockaddr_in echoServAddr; 13 struct sockaddr_in fromAddr; 14 unsigned short echoServPort; 15 unsigned int fromSize; 16 char *servIP; 17 char *echoString; 18 char echoBuffer[ECHOMAX+1]; 19 int echoStringLen=0; 20 int respStringLen; 21 int i;//for counting 22 23 if (argc<3) { 24 printf("Usage:%s <Server IP> <Echo Port> [<Echo Words>] ",argv[0]); 25 exit(1); 26 } 27 28 servIP = argv[1]; 29 30 for(i=3;i<argc;i++){ 31 echoStringLen = echoStringLen + strlen(argv[i]); 32 } 33 if (echoStringLen > ECHOMAX) 34 printf("Echo word too long. "); 35 36 echoServPort = atoi(argv[2]); 37 38 if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) <0) 39 printf("socket() failed. "); 40 memset(&echoServAddr,0,sizeof(echoServAddr)); 41 echoServAddr.sin_family = AF_INET; 42 echoServAddr.sin_addr.s_addr = inet_addr(servIP); 43 echoServAddr.sin_port = htons(echoServPort); 44 45 for(i=3;i<argc;i++) { 46 echoString = argv[i]; 47 if ((sendto(sock,echoString,strlen(echoString),0,(struct sockaddr *)&echoServAddr,sizeof(echoServAddr))) != strlen(echoString)) 48 printf("sendto() sent a different number of bytes than expected. "); 49 } 50 } 51 echoBuffer[strlen(echoString)] = '