操作系统与网络 2019-3-20

本文探讨了TCP传输文件的实现,包括客户端发送数据和服务器接收数据的细节。接着,深入讨论了网络拥塞控制,解释了拥塞现象、原因及防止方法,如滑动窗口、慢启动、拥塞避免、快恢复策略。最后,提到了同步非阻塞网络编程,通过多线程实现服务器同时处理多个客户端连接。
摘要由CSDN通过智能技术生成

1.TCP传输文件

1.1 继续完成客户端收发数据的代码

  • 1.当服务器端同意接受文件时,我们在客户端循环读文件,并将读取到的数据发送到服务器端;并输出当前传送的百分比;
int main()
{
   	... ...
	
	// 1.获取文件信息
	// 先定义一个存放文件信息的结构体
	struct FileInfo
	{
   
		char file_name[50];
		int file_len;
	};
	FileInfo fileinfo;
	strcpy_s(fileinfo.file_name, 50, "CMake Practice.pdf");
	FILE* fp = 0;
	fopen_s(&fp, "CMake Practice.pdf", "rb");				// 以读写的形式打开文件
	int no = fileno(fp);
	fileinfo.file_len = filelength(no);
	// 2.发送文件信息
	int n_send_size = ::send(client_socket, (const char*)&fileinfo, sizeof(fileinfo), 0);
	if(n_send_size <= 0)
		cout << "error code: " << WSAGetLastError() << endl;
	else
	{
   
		// 3.接受对方回应信息
		bool b_flag = false;
		int n_recv_size = ::recv(client_socket, (char*)&b_flag, sizeof(bool), 0);
		if(n_recv_size <= 0)
			cout << "error code: " << WSAGetLastError() << endl;
		else if(b_flag == true)
		{
   
			// ===================================3-20========================================
			// 4.如果对方同意接受,则不停地发送文件
			char szBuffer[4096*64
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值