首页 > 学院 > 开发设计 > 正文

最简单服务器程序UDP(Linux)

2019-11-08 20:03:52
字体:
来源:转载
供稿:网友

一.服务器程序

  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 }


上一篇:文章标题

下一篇:文章标题

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表