网络编程 10.26

编程入门 行业动态 更新时间:2024-10-26 00:30:26

<a href=https://www.elefans.com/category/jswz/34/1768814.html style=网络编程 10.26"/>

网络编程 10.26

#include <head.h>
#define SER_PORT 69
int main(int argc, const char *argv[])
{int cfd=socket(AF_INET,SOCK_DGRAM,0);//创建套接字文件用于发送给服务器if(cfd==-1)//判断套接字文件是否创建成功{perror("socket error");return -1;}printf("*********************\n");printf("********1.下载*******\n");printf("********2.上传*******\n");printf("********3.退出*******\n");printf("*********************\n");struct sockaddr_in sin;//定义地址信息结构体 用于发给服务器sin.sin_family=AF_INET;//IPV4协议sin.sin_port=htons(SER_PORT);//端口号 默认为69sin.sin_addr.s_addr=inet_addr(argv[1]);//外部传参写入IP地址socklen_t socklen=sizeof(sin);//求结构体大小 sizeof(sin)不能取地址char buf[516]="";//定义读写请求的包char ack[4]="";//定义ACK应答包short *a1=(short *)ack;//定义一个指针a1指向字符串ack首地址 ack为char类型 但指针是short要强转*a1=htons(4);//给字符数组ack前两个字节赋值为4 因为要上传到服务器 所以要转成网络字节序short *a2=(short*)ack+1;//定义一个指针a2指向ack后两字节 short类型指针偏移量为2字节int a=0;int b=1;char filename[20]="";//定义下载文件名的字符数组char filename1[20]="";//定义上传文件名的字符数组while(1)//循环{*a2=htons(b);//bzero(buf,sizeof(buf));short*p1=(short*)buf;scanf("%d",&a);//输入数字 1.下载 2.上传 3.退出if(3==a)break;if(1==a){*p1=htons(a);getchar();char *p2=buf+2;printf("请输入要下载的文件名\n");scanf("%s",filename);//获取文件名strcpy(p2,filename);getchar();char*p3=p2+strlen(p2);*p3=0;char *p4=p3+1;strcpy(p4,"octet");	sendto(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,sizeof(sin));int fp=open(filename,O_RDWR|O_CREAT|O_TRUNC,0664);if(fp==-1){perror("open error");return -1;}while(1){bzero(buf,sizeof(buf));size_t res=recvfrom(cfd,buf,sizeof(buf),0,(struct sockaddr*)&sin,&socklen);int ret=write(fp,buf+4,res-4);if(ret<512)break;sendto(cfd,ack,sizeof(ack),0,(struct sockaddr*)&sin,sizeof(sin));b++;*a2=htons(b);}close(fp);}else if(2==a){printf("请输入要上传的文件名");scanf("%s",filename1);printf("文件名为:%s",filename1);}}close(cfd);return 0;}        

更多推荐

网络编程 10.26

本文发布于:2023-12-03 07:14:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1652539.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络编程

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!