阅读背景:

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

来源:互联网 

一.服务器程序

  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 #includ



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: