步骤1:同上

步骤2:建立目录

   cd workdir/linux/application/12-network/

   mkdir udp

  cd udp

步骤3:复制

  cp /mnt/hgfs/share/2.\ Linux系统部分/18.\ Linux系统udp网络协议编程实验/实验代码/client.c ./ -a

  cp /mnt/hgfs/share/2.\ Linux系统部分/18.\ Linux系统udp网络协议编程实验/实验代码/server.c ./ -a

步骤4:执行

  gcc client.c -o client

  gcc server.c -o server

  ./server 192.168.100.192 8888

  新打开终端

  cd workdir/linux/application/12-network/udp/

  ./client 192.168.100.192 8888

附:程序源码

  client.c

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <sys/types.h>
 5 #include <sys/socket.h>
 6 #include <errno.h>
 7 #include <string.h>
 8 #include <arpa/inet.h>
 9 #include <netinet/in.h>
10 
11 #define N 64
12 
13 int main(int argc, char *argv[])//./server ip port
14 {
15     int sockfd;
16     struct sockaddr_in servaddr;
17     char buf[N] = {0};
18 
19     if (argc < 3)
20     {
21         printf("usage:%s ip port\n", argv[0]);
22         return 0;
23     }
24 
25     if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
26     {
27         perror("socket");
28         exit(-1);
29     }
30 
31 
32     memset(&servaddr, 0, sizeof(servaddr));
33     servaddr.sin_family = AF_INET;
34     servaddr.sin_port = htons(atoi(argv[2]));//"6000"--6000 htons(6000);
35     servaddr.sin_addr.s_addr = inet_addr(argv[1]);
36     
37     while (1)
38     {
39         printf(">");
40         fgets(buf, N, stdin);
41         sendto(sockfd, buf, strlen(buf)+1, 0, (struct sockaddr *) &servaddr, sizeof(servaddr));
42 
43         memset(buf, 0, sizeof(buf));
44         recvfrom(sockfd, buf, N, 0, NULL, NULL);
45         printf("%s\n", buf);
46     }
47     close(sockfd);
48 
49     return 0;
50 }

  server.c

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <sys/types.h>
 5 #include <sys/socket.h>
 6 #include <errno.h>
 7 #include <string.h>
 8 #include <arpa/inet.h>
 9 #include <netinet/in.h>
10 
11 #define N 64
12 
13 int main(int argc, char *argv[])//./server ip port
14 {
15     int sockfd;
16     struct sockaddr_in myaddr, peeraddr;
17     char buf[N] = {0};
18     socklen_t len;
19     ssize_t n;
20 
21     if (argc < 3)
22     {
23         printf("usage:%s ip port\n", argv[0]);
24         return 0;
25     }
26 
27     if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
28     {
29         perror("socket");
30         exit(-1);
31     }
32 
33 
34     memset(&myaddr, 0, sizeof(myaddr));
35     myaddr.sin_family = AF_INET;
36     myaddr.sin_port = htons(atoi(argv[2]));//"6000"--6000 htons(6000);
37     myaddr.sin_addr.s_addr = inet_addr(argv[1]);
38     
39     if (bind(sockfd, (struct sockaddr *)&myaddr, sizeof(myaddr)) == -1)
40     {
41         perror("bind");
42         exit(-1);
43     }
44 
45     memset(&peeraddr, 0, sizeof(peeraddr));
46     len = sizeof(peeraddr);
47 
48     while (1)
49     {
50         memset(buf, 0, sizeof(buf));
51         n = recvfrom(sockfd, buf, N, 0, (struct sockaddr *)&peeraddr, &len);
52         printf("from %s:%d %s\n", inet_ntoa(peeraddr.sin_addr),
53                 ntohs(peeraddr.sin_port), buf);
54         sendto(sockfd, buf, n, 0, (struct sockaddr *)&peeraddr, sizeof(peeraddr));
55     }
56     close(sockfd);
57 
58     return 0;
59 }

 

posted on 2018-08-05 21:14  kingofloong  阅读(318)  评论(0)    收藏  举报