步骤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 }
浙公网安备 33010602011771号