day2 网络编程

  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 }

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值