1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <unistd.h> 5 #include <ctype.h> 6 #include <sys/types.h> 7 #include <sys/socket.h> 8 #include <netinet/in.h> 9 #include <arpa/inet.h> 10 11 #define MAXLINE 80 12 #define SERV_PORT 6666 13 14 int main() 15 { 16 struct sockaddr_in servaddr, cliaddr; 17 socklen_t cliaddr_len; 18 int sockfd; 19 char buf[MAXLINE]; 20 char str[INET_ADDRSTRLEN]; 21 int i, len; 22 23 sockfd = socket(AF_INET, SOCK_DGRAM, 0); 24 25 bzero(&servaddr, sizeof(servaddr)); 26 servaddr.sin_family = AF_INET; 27 servaddr.sin_addr.s_addr = htonl(INADDR_ANY); 28 servaddr.sin_port = htons(SERV_PORT); 29 30 bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)); 31 PRintf("Accepting connections .../n"); 32 33 while(1) 34 { 35 cliaddr_len = sizeof(cliaddr); 36 len = recvfrom(sockfd, buf, MAXLINE, 0, (struct sockaddr*)&cliaddr, &cliaddr_l en); 37 if(len == -1) 38 { 39 printf("recvfrom error/n"); 40 } 41 printf("received from %s at PORT %d/n", 42 inet_ntop(AF_INET, &cliaddr.sin_addr, str, sizeof(str)), 43 ntohs(cliaddr.sin_port)); 44 for(i = 0; i < len; i++) 45 { 46 buf[i] = toupper(buf[i]); 47 } 48 len = sendto(sockfd, buf, len, 0, (struct sockaddr*)&cliaddr, sizeof(cliaddr)) ; 49 if(len == -1) 50 { 51 printf("sendto error!/n"); 52 } 53 } 54 close(sockfd); 55 return 0; 56 }二.客户端程序
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <ctype.h> 5 #include <sys/types.h> 6 #include <sys/socket.h> 7 #include <unistd.h> 8 #include <netinet/in.h> 9 #include <arpa/inet.h> 10 11 #define MAXLINE 80 12 #define SERV_PORT 6666 13 #define ip "127.0.0.1" 14 15 int main(int argc, char* argv[]) 16 { 17 struct sockaddr_in servaddr; 18 int sockfd, n; 19 char buf[MAXLINE]; 20 21 sockfd = socket(AF_INET, SOCK_DGRAM, 0); 22 23 bzero(&servaddr, sizeof(servaddr)); 24 servaddr.sin_family = AF_INET; 25 inet_pton(AF_INET, IP, &servaddr.sin_addr); 26 servaddr.sin_port = htons(SERV_PORT); 27 28 while(fgets(buf, MAXLINE, stdin) != NULL) 29 { 30 n = sendto(sockfd, buf, strlen(buf), 0, (struct sockaddr*)&servaddr, sizeof(se rvaddr)); 31 if(n == -1) 32 { 33 printf("sendto error!/n"); 34 } 35 n = recvfrom(sockfd, buf, MAXLINE, 0, NULL, 0); 36 if(n == -1) 37 { 38 printf("recvfrom error!/n"); 39 } 40 write(STDOUT_FILENO, buf, n); 41 } 42 close(sockfd); 43 return 0; 44 }
新闻热点
疑难解答