服务器
1 #include<string.h>
2 #include<stdlib.h>
3 #include<stdio.h>
4 #include <sys/types.h> /* See NOTES */
5 #include <sys/socket.h>
6 #include <arpa/inet.h>
7 #include <unistd.h>
8 #include <netinet/in.h>
9 #define ERR_RES(a) do{\
10 fprintf(stderr,"line:%d\n",__LINE__);\
11 perror(a);}while(0)
12
13 #define IP "192.168.0.107"
14 int main(int argc, const char *argv[])
15 {
16
17 int server_fd = socket(AF_INET, SOCK_STREAM,0);
18 if(server_fd < 0)
19 {
20 ERR_RES("socket");
21 return -1;
22 }
23 struct sockaddr_in sin;
24
25 sin.sa_family = AF_INET; /* address family: AF_INET */
26 sin.sin_port = htons(7896); /* port in network byte order */
27 sin.sin_addr.s_addr = inet_addr(IP); /* internet address */
28 if(bind(server_fd,(struct sockaddr*)&sin,sizeof(sin)) < 0)
29 {
30 ERR_RES("bind");
31 return -1;
32 }
33 printf("bind success __%d__\n", __LINE__);
34 //监听
35 if(linsten(server_fd,128) < 0)
36 {
37 ERR_RES("linsten");
38 return -1;
39 }
40 printf("listen success __%d__\n",__LINE__);
41
42 struct sockaddr_in cin;
43 socklen_t addrlen = sizeof(cin);
44 int new_fd = accept(server_fd,(struct sockaddr*)&cin,&addrlen);
45
46 if(new_fd < 0)
47 {
48 ERR_RES("accept");
49 return -1;
50 }
51 printf("[%s : %d]"new_fd = %d 连接成功__%d__\n,\
52 int_ntoa(cin.sin_addr),ntohs(cin.sin_port),new_fd,__LINE__);
53 char buf[1024] = "";
54 ssize_t res = 0;
55 while(1)
56 {
57 memset(buf,0,sizeof(buf));
58 res = recv(new_fd,buf,sizeof(buf),0);
59 if(ers < 0)
60 {
61 ERR_RES("recv");
62 return -1;
63 }
64 else if(0 == res)
65 {
66
67 printf("[%s : %d]"new_fd = %d 客户端下线__%d__\n,\
68 int_ntoa(cin.sin_addr),ntohs(cin.sin_port),new_fd,__LINE__);
69 break;
70 }
71 printf("[%s : %d]"new_fd = %d :%s __%d__\n,\
72 int_ntoa(cin.sin_addr),ntohs(cin.sin_port),new_fd,buf__LINE__);
73 //发送
74 strcpy(buf,"*_*");
75 if(send(new_fd,buf,sizeof(buf),0) < 0)
76 {
77 ERR_RES("send");
78 return -1;
79 }
80 printf("发送成功\n");
81 }
82 close(new_fd);
83 close(server_fd);
84
85 return 0;
86 }
客户端
1 #include<string.h>
2 #include<stdlib.h>
3 #include<stdio.h>
4 #include <sys/types.h> /* See NOTES */
5 #include <sys/socket.h>
6 #include <netinet/in.h>
7 #include <arpa/inet.h>
8 #include <unistd.h>
9
10 #define ERR_RES(a) do{\
11 fprintf(stderr,"line:%d\n",__LINE__);\
12 perror(a);\
13 }while(0)
14 #define IP "192.168.0.107"
15
16 int main(int argc, const char *argv[])
17 {
18 int client_fd = socket(AF_INET,SOCK_STREAM,0);
19 if(client_fd < 0)
20 {
21 ERR_RES("socket");
22 return -1;
23 }
24 struct cockaddr_in sin;
25 sin.sin_family = AF_INET;
26 sin.sin_port = htons(7896);
27 sin.sin_addr.s_addr = inet_addr(IP);
28 if(connect(client_fd,(struct sockaddr*)&sin,sizeof(sin)) < 0)
29 {
30 ERR_RES("connect");
31 return -1;
32 }
33 printf("connect success\n");
34 char buf[1024] = "";
35 ssize_t rev = 0;
36 while(1)
37 {
38 memset(buf,0,sizeof(buf));
39 fgets(buf,sizeof(buf)-1,stdin);
40 buf[strlen(buf)-1] = '\0';
41 if(send(client_fd,buf,sizeof(buf),0) < 0)
42 {
43 ERR_RES("send");
44 return -1;
45 }
46 printf("发送成功\n");
47 memset(buf,0,sizeof(buf));
48 rev = recv(client_fd,buf,sizeof(buf),0);
49 if(rev < 0)
50 {
51 ERR_RES("recv");
52 return -1;
53 }
54 else if(0 == rev)
55 {
56 printf("服务器下线\n");
57 break;
58 }
59 printf(": %S__%d__\n",__LINE__);
60 }
61 close(client_fd);
62 return 0;
63 }