24.1.16 DAY 3

1.

代码:

  1 #include<myhead.h>
  2 #define SER_PORT 69
  3 #define SER_IP "192.168.125.197"       
  5 int main(int argc, const char *argv[])
  6 {
  7     //1、创建用于通信的套接字文件描述符
  8     int cfd = socket(AF_INET, SOCK_DGRAM, 0);
  9     if(cfd == -1)
 10     {
 11         perror("socket error");
 12         return -1;
 13     }
 14 
 15     //2、绑定(可选)
 16 
 17     //3、填充服务器的地址信息结构体
 18     struct sockaddr_in sin;
 19     sin.sin_family = AF_INET;
 20     sin.sin_port = htons(SER_PORT);
 21     sin.sin_addr.s_addr = inet_addr(SER_IP);
 22 
 23     //向服务器发送下载请求
 24     char buf[512] = "";
 25     socklen_t socklen=sizeof(sin);
 26 
 27     //组装请求数据
 28     short *p1 = (short *)buf;
 29     *p1 = htons(1);
 30 
 31     char *p2 = buf+2;
 32     strcpy(p2, "5.png");
 33 
 34     char *p3 = p2+strlen(p2)+1;
 35     strcpy(p3, "octet");
 36 
 37     int len = 4+strlen(p2) + strlen(p3);   //要发送的长度
 38 
 39     //向服务器发送请求
 40     int res=sendto(cfd, buf, len, 0, (struct sockaddr*)&sin, sizeof(sin));
 41     if(res==-1)
 42     {
 43         perror("sendto error");
 44         return -1;
 45     }
 46 
 47 
 48     while(1)
 49     {
 50         res=recvfrom(cfd,buf,4,0,(struct sockaddr*)&sin, &socklen);
 51         if(res==-1)
 52         {
 53             perror("recvfrom error");
 54             return -1;
 55         }
 56         if (res==4)
 57         {
 58             res=sendto(cfd,buf,516,0,(struct sockaddr*)&sin,sizeof(sin));
 59             if(res==-1)
 60             {
 61             perror("sendto error");
 62             return -1;
 63             }
 64             if(strcmp(buf,"quit")==0)
 65                 break;
 66         }
 67     }
 68 
 69 
 70     //5、关闭套接字
 71     close(cfd);
 72 
 73 
 74     return 0;
 75 }               

运行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值