1 #include<head.h>
2 #define SER_PORT 8888 //服务器端口号
3 #define SER_IP "192.168.122.127" //服务器ip地址
4 #define CLI_PORT 6666 //客户端的端口号
5 #define CLI_IP "192.168.122.89" //客户端ip地址
6 int main(int argc, const char *argv[])
7 {
8 //1、创建用于通信的套接字文件描述符
9 int cfd = -1;
10 cfd = socket(AF_INET, SOCK_STREAM, 0);
11 if(cfd == -1)
12 {
13 perror("socket error");
14 return -1;
15 }
16 printf("cfd = %d\n", cfd); //3
17 int reuse=1;
18 if(setsockopt(cfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))==-1)
19 {
20 perror("setsockopt error");
21 return -1;
22 }
23 //2、绑定(可选)
24 //2.1 填充地址信息结构体
25 struct sockaddr_in cin;
26 cin.sin_family = AF_INET;
27 cin.sin_port = htons(CLI_PORT);
28 cin.sin_addr.s_addr = inet_addr(CLI_IP);
29 //2.2绑定
30 if(bind(cfd, (struct sockaddr*)&cin, sizeof(cin)) == -1)
31 {
32 perror("bind error");
33 return -1;
34 }
35 printf("bind success\n");
36 //3、连接服务器
37 //3.1 填充服务器地址信息结构体
38 struct sockaddr_in sin;
39 sin.sin_family = AF_INET;
40 sin.sin_port = htons(SER_PORT);
41 sin.sin_addr.s_addr = inet_addr(SER_IP);
42 //3.2 连接
43 if(connect(cfd, (struct sockaddr*)&sin, sizeof(sin)) == -1)
44 {
45 perror("connect error");
46 return -1;
47 }
48 printf("connect success\n");
49 //4、收发数据
50 char buf[5]={0xff,0x02,0x00,0x20,0xff};
51 char b[5]={0xff,0x02,0x00,0,0xff};
52 char c[5]={0xff,0x02,0x01,0,0xff};
53 while(1)
54 {
55 //清空数组
56 bzero(buf, sizeof(buf));
57 //printf("请输入>>>");
58 fgets(buf, sizeof(buf), stdin); //从终端输入数据
59 buf[strlen(buf)-1] = 0; //将换行改为'\0'
60 if(buf[0]=='w')
61 {
62 b[3]+=5;
63 send(cfd, b, sizeof(b), 0);
64 printf("发送成功\n");
65 if(strcmp(buf, "quit") == 0)
66 {
67 break;
68 }
69 }
70 if(buf[0]=='s')
71 {
72 b[3]-=5;
73 send(cfd, b, sizeof(b), 0);
74 printf("发送成功\n");
75 if(strcmp(buf, "quit") == 0)
76 {
77 break;
78 }
79 }
80 if(buf[0]=='d')
81 {
82 c[3]+=5;
83 send(cfd, c, sizeof(c), 0);
84 printf("发送成功\n");
85 if(strcmp(buf, "quit") == 0)
86 {
87 break;
88 }
89 }
90 if(buf[0]=='a')
91 {
92 c[3]-=5;
93 send(cfd, c, sizeof(c), 0);
94 printf("发送成功\n");
95 if(strcmp(buf, "quit") == 0)
96 {
97 break;
98 }
99 }
100 }
101 //5、关闭套接字
102 close(cfd);
103 return 0;
104 }
day2 网络编程
最新推荐文章于 2024-08-12 14:02:31 发布