把上午写的传输字符串代码改了一下,本来是想实现客户端和服务器一对一多线程分块传输的,结果发现好像变成了一个服务器对多个客户端,每个客户端分配一条线程来处理文件传输任务的模式...
直接上代码,使用的是简单的fstream操作。
Sever代码:
#include "stdafx.h"
#include <WinSock2.h> //windows socket的头文件
#include <Windows.h>
#include <iostream>
#include <thread>
#include <mutex>
#include <process.h>
#include <fstream>
#include <string>
#pragma comment(lib, "ws2_32.lib") //连接winsock2.h的静态库文件
using namespace std;
mutex m;
//定义结构体用来设置
typedef struct my_file
{
SOCKET clientSocket; //文件内部包含了一个SOCKET 用于和客户端进行通信
sockaddr_in clientAddr; //用于保存客户端的socket地址
int id; //文件块的序号
}F;
DWORD WINAPI transmmit(const LPVOID arg)
{
//实际上这里也可以不加锁,上锁是为了方便看输出
m.lock();
F *temp = (F*)arg;
//获取文件的序号
//int file_id = temp->id;
//获取客户机的端口号
//ntohs(temp -> clientAddr.sin_port);
cout << "测试开始,等待客户端发送消息..." << endl;
/