network-day3

 TCP机械臂测试:

  1 #include <head.h>
  2 
  3 
  4 #define PORT 8888   //服务器端口号,是2字节整数
  5 #define IP "192.168.125.104"    //服务器ip地址
  6 int main(int argc, const char *argv[])
  7 {
  8     //1.创建套接字
  9     int sfd=-1;
 10     //功能:创建一个支持TCP通信的套接字
 11     //socket(通信域,通信类型,通信协议)
 12     if ((sfd=socket(AF_INET,SOCK_STREAM,0))==-1)
 13     {
 14         perror("socket error");
 15         return -1;
 16     }
 17 
 18     printf("sfd=%d\n",sfd);
 19     //2.1填充地址信息结构体
 20     struct sockaddr_in sin;
 21     sin.sin_family=AF_INET;//地址组
 22     sin.sin_port=htons(PORT);//端口号
 23     sin.sin_addr.s_addr=inet_addr(IP);//IP地址
 24     //连接服务器
 25     if (connect(sfd,(struct sockaddr*)&sin,sizeof(sin))==-1)
 26     {
 27         perror("connect error");
 28         return -1;
 29     }
 30 
 31     char rbuf[5]={0xff,0x02,0x00,0,0xff};//-90~90
 32     unsigned char bbuf[5]={0xff,0x02,0x01,90,0xff};//0~180
 33     while(1)
 34     {
 35         char c=fgetc(stdin);
 36         getchar();
 37         if (c=='W'||c=='w')
 38         {
 39             rbuf[3]=rbuf[3]+5;
 40             if (rbuf[3]>90)
 41             {
 42                 rbuf[3]=90;
 43             }
 44             send(sfd,rbuf,sizeof(rbuf),0);
 45         }
 46         else if (c=='S'||c=='s')
 47         {
 48             rbuf[3]=rbuf[3]-5;
 49             if (rbuf[3]<-90)
 50             {
 51                 rbuf[3]=-90;
 52             }
 53             send(sfd,rbuf,sizeof(rbuf),0);
 54         }
 55         else if (c=='D'||c=='d')
 56         {
 57             bbuf[3]=bbuf[3]+10;
 58             if (bbuf[3]>180)
 59             {
 60                 bbuf[3]=180;
 61             }
 62             send(sfd,bbuf,sizeof(bbuf),0);
 63         }
 64         else if(c=='A'||c=='a')
 65         {
 66             if (bbuf[3]<10)
 67             {
 68                 bbuf[3]=0;
 69             }
 70             else
 71             {
 72                 bbuf[3]=bbuf[3]-10;
 73             }
 74             send(sfd,bbuf,sizeof(bbuf),0);
 75 
 76         }
 77         else
 78         {
 79             printf("input error\n");
 80         }
 81 
 82     }
 83     close(sfd);
 84     return 0;
 85 }                                                                                                                                                                                                                                   
~                                                                                                                                                                                                                                       
~                                                                                                                                                                                                                                       
~         

 tftp协议:

  1 #include<head.h>
  2 
  3 //实现下载功能
  4 int do_download(int cfd, struct sockaddr_in sin)
  5 {
  6     //定义变量存储下载请求包
  7     char buf[516] = "";
  8     //定义变量存储文件名
  9     char fileName[40] = "";
 10 
 11     printf("请输入文件名:");
 12     scanf("%s", fileName);
 13     getchar();
 14 
 15     //组装请求包
 16     short *p1 = (short *)buf;
 17     *p1 = htons(1);                 //表明要下载
 18 
 19     char *p2 = buf+2;           //文件名段
 20     strcpy(p2, fileName);
 21 
 22     char *p4 = p2+strlen(p2)+1;    //模式段
 23     strcpy(p4, "octet");
 24 
 25     int size = 4 + strlen(p2) + strlen(p4);      //要发送数据的大小
 26 
 27     //向服务器发送下载请求
 28     if(sendto(cfd, buf, size, 0, (struct sockaddr*)&sin, sizeof(sin)) == -1)
 29     {
 30         perror("sendto error");
 31         return -1;
 32     }
 33 
 34     printf("请求成功\n");
 35     struct sockaddr_in newsin;
 36     socklen_t socklen=sizeof(newsin);
 37 
 38     int res=-1;
 39 
 40     int fd=-1;
 41     if ((fd=open(fileName,O_WRONLY|O_CREAT|O_TRUNC,0664))==-1)
 42     {
 43         perror("open error");
 44         return -1;
 45     }
 46 
 47     //循环接收回复服务器发来的消息
 48     while(1)
 49     {
 50         //服务器回复
 51         if((res=recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr*)&newsin,&socklen))==-1)
 52         {
 53             perror("sendto error");
 54             return -1;
 55 
 56         }
 57         if (ntohs(*p1)==3)
 58         {
 59             buf[1]=4;
 60             sendto(cfd,buf,4,0,(struct sockaddr*)&newsin,sizeof(newsin));
 61             write(fd,buf+4,res-4);
 62         }
 63         else if (ntohs(*p1==5))
 64         {
 65             printf("error\n");
 66             return -1;
 67         }
 68         if (res<516)
 69         {
 70             printf("copy is over\n");
 71             break;
 72         }
 73     }
 74     close(cfd); 
 75 
 76 }
 77 
 78 
 79 int main(int argc, const char *argv[])
 80 {
 81     if(argc != 2)
 82     {
 83         printf("input error\n");
 84         printf("usage:./a.out ip\n");
 85         return -1;
 86     }
 87 
 88     //1、创建套接字
 89     int cfd = socket(AF_INET, SOCK_DGRAM, 0);
 90     if(cfd == -1)
 91     {
 92         perror("socket error");
 93         return -1;
 94     }
 95 
 96     //2、填充服务器地址信息结构体
 97     struct sockaddr_in sin;
 98     sin.sin_family = AF_INET;
 99     sin.sin_port = htons(69);
100     sin.sin_addr.s_addr = inet_addr(argv[1]);
101 
102     int mune = -1;
103     while(1)
104     {
105         system("clear");                     //清屏
106         printf("\t\t======1、下载=======\n");
107         printf("\t\t======2、上传=======\n");
108         printf("\t\t======0、退出=======\n");
109 
110         printf("请输入功能:");
111         scanf("%d", &mune);
112         getchar();
113 
114         //多分支选择
115         switch(mune)
116         {
117         case 1:
118             {
119                 do_download(cfd, sin);
120             }
121             break;
122 
123         case 2:
124             {
125                 //do_upload();
126             }
127             break;
128         case 0:
129             goto POS;
130         default:printf("输入功能有误,请重新输入\n");
131         }
132 
133         //阻塞
134         printf("输入任意键,按回车清空:");
135         while(getchar() != '\n');
136 
137     }
138 
139 POS:
140     //关闭套接字
141     close(cfd);
142 
143 
144     return 0;
145 }
146                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
~  

 network-day3 - 幕布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值