服务器程序
注:此例中SERV_IP为服务器IP, "127.0.0.1"为本机IP
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/socket.h>
4 #include <arpa/inet.h>
5 #include <unistd.h>
6 #include <stdlib.h>
7
8 #define SERV_IP "127.0.0.1" //本机IP
9 #define SERV_PORT 8000
10
11 void sys_err(char* err)
12 {
13 perror(err);
14 exit(1);
15 }
16 int main(void)
17 {
18 int sock_fd;
19 int net_fd;
20 int ret;
21 socklen_t addrlen;
22
23 struct sockaddr_in cli_addr;
24 struct sockaddr_in serv_addr;
25 serv_addr.sin_family = AF_INET;
26 serv_addr.sin_port = htons(SERV_PORT);
27 serv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
28
29
30 sock_fd = socket(AF_INET, SOCK_STREAM, 0);
31 if(sock_fd == -1)
32 sys_err("fail to socket");
33 ret = bind(sock_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
34 if(ret == -1)
35 sys_err("fail to bind");
36
37 ret = listen(sock_fd, 20);
38 if(ret == -1)
39 sys_err("fail to listen");
40 net_fd = accept(sock_fd, (struct sockaddr* )&cli_addr, &addrlen);
41 if(net_fd == -1)
42 sys_err("fail to accept");
43
44 char buf[1024];
45 int readsize;
46 while(1)
47 {
48 readsize = read(net_fd, buf, 1024);
49 if(readsize == 0)
50 {
51 printf("the client has exited/n");
52 break;
53
54 }
55
56 write(STDOUT_FILENO, buf, readsize);
57 }
58
59 close(sock_fd);
60
61 return 0;
62 }
客户端程序
注:SERV_IP 为服务器IP,
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <arpa/inet.h>
4 #include <sys/socket.h>
5 #include <sys/types.h>
6 #include <stdlib.h>
7 #include <string.h>
8
9 #define SERV_IP "127.0.0.1" //本机IP
10 #define SERV_PORT 8000
11
12 void sys_err(char* err)
13 {
14 perror(err);
15 exit(0);
16 }
17 int main(void)
18 {
19 int sockfd;
20 int ret;
21
22 struct sockaddr_in serv_addr;
23 serv_addr.sin_family = AF_INET;
24 serv_addr.sin_port = htons(SERV_PORT);
25 serv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
26
27 sockfd = socket(AF_INET, SOCK_STREAM, 0);
28 if(sockfd == -1)
29 sys_err("fail to socket");
30 ret = connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
31 if(ret == -1)
32 sys_err("fail to connect");
33 char buf[1024];
34 int readsize;
35
36 while(1)
37 {
38 readsize = read(STDIN_FILENO, buf, 1024);
39 if(strncmp(buf, "exit", 4) == 0)
40 {
41 printf("client has exited");
42 break;
43 }
44
45 write(sockfd, buf, readsize);
46 }
47 close(sockfd);
48
49 }