网络编程 day 3

这篇具有很好参考价值的文章主要介绍了网络编程 day 3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、UDP下载

#include<myhead.h>

#define ERR_MSG(msg)  do{\
    fprintf(stderr, "__%d__:", __LINE__); \
    perror(msg);\
}while(0)

#define SER_PORT 8888               //端口号,范围1024~49151
#define SET_IP  "192.168.114.85"   //本机IP,ifconfig

int do_download(int cfd,struct sockaddr_in sin);

int main(int argc, const char *argv[])
{
    //创建报式套接字 socket
  int cfd = socket(AF_SOCK_DGRAM,0);
  if(cfd < 0)
  {
  	ERR_MSG("socket");
	return -1;
  }

  printf("socket create success cfd=%d\n",cfd);
  
    //填充服务器的地址信息结构体,给sendto函数使用
	struct sockaddr_in sin;
	sin.sin_family    = AF_INET;
	sin.sin_port      =htons(SER_PORT);
	sin.sin_addr.s_addr=inet_addr(SER_IP);

	char choose = 0;
	while(1)
	{
		system("clear");
		printf("--------------------------\n");
		printf("------------1.下载--------\n");
		printf("------------2.上传--------\n");
		printf("------------3.退出--------\n");
		printf("--------------------------\n");
		printf("请输入>>>");
		scanf("%c",&choose);
		while(getchar() !=10);//循环吸收垃圾字符,直到吸收到\n字符

		switch(choose)
		{
			case '1':
				do_download(cfd,sin);
				break;
			case '2':
				break;
			case '3':
				goto END;
				break;
			default:
				printf("输入错误,请重新输入\n");
				break;
		}

		printf("输入任意字符清屏");
		while(getchar()!=10);
	}
END:
	//关闭套接字
	
	close(cfd);
	return 0;
}

int do_download(int cfd,struct sockaddr_in sin)
{
	char buf[516] = "";
	char filename[20] = "";

	printf("请输入要下载的文件名>>>");
	scanf("%s",filename);
	while(getchar()!=10)
	unsigned short* ptr1 = (unsigned short*)buf;
	*ptr1 = htons(1);

	char* ptr2 = buf+2;
	strcpy(ptr2,filename);

	char* ptr4 = ptr2+strlen(filename)+1;

	strcpy(ptr4,"octet");

	int size = 2+strlen(ptr2)+1+strlen(ptr4)+1;

	if(sendto(cfd,buf,size,0,(struct sockaddr*)&sin,sizeof(sin)) < 0)
	{
		ERR_MSG("sendto");
		return -1;
	}

	printf("sendto download request success\n");

	while(1)
   	{
		//接收数据 recvfrom,接收地址信息
		//组ACK包
		//发送ACK sendto
		//判断数据是否小于512个字节,若小于则下载完成
	}

	return 0;
}

2、思维导图

网络编程 day 3,网络,c语言文章来源地址https://www.toymoban.com/news/detail-680350.html

到了这里,关于网络编程 day 3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络编程day5

    思维导图 多路复用 selsect ser cli poll ser cli

    2024年01月22日
    浏览(42)
  • 网络编程day1

    2024年02月01日
    浏览(51)
  • 网络编程Day6

    网络聊天室 服务器 客户端

    2024年01月22日
    浏览(40)
  • day18-网络编程(下)

    OSI的7层模型对于大家来说可能不太好理解,所以我们通过一个案例来讲解: 假设,你在浏览器上输入了一些,内部通过DNS找到对应的IP后,再发送数据时内部会做如下的事: 应用层:规定数据的格式。 表示层:对应用层数据的编码、压缩(解压缩)、分块、加密(解

    2024年04月22日
    浏览(37)
  • day17-网络编程(上)

    你必须了解的网络相关设备和基础概念。 假设 alex 上了一个野鸡大学买了一台电脑,电脑里存了1部小电影,整宿整宿的在宿舍反复的看。 alex 如何想要和室友 于超 进行收发数据,可以通过一根网线来进行连接,并进行数据的传输。 1.1.1 交换机 其他2位室友如何也想和他们的

    2024年04月22日
    浏览(41)
  • 网络编程-day3

       UDP服务器: UDP客户端:       

    2024年02月12日
    浏览(46)
  • 23111 网络编程 day5

    2024年01月20日
    浏览(86)
  • 23062网络编程day5

    根据select TCP服务器流程图编写服务器 思维导图  

    2024年02月10日
    浏览(41)
  • 网络编程day6作业

    完成网络聊天室编写 ser cli 思维导图:https://mubu.com/app/edit/home/5fnWgXpb5GT#m

    2024年02月09日
    浏览(41)
  • 【100天精通Python】Day46:Python网络编程_网络编程基础与入门

    目录 专栏导读  1 网络编程的基础 2. 基本概念和协议 2.1 计算机网络基础

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包