我知道 C++ 很长时间了,但是大约一年半前开始将它用于我的目的。我开始在 C++ 上学习网络编程,第一个网络项目是“通过 TCP/IP 在主机之间传输文件”,这听起来很简单,但我一直在发送数据。
我正在尝试发送小于 4KB 的小缓冲区,所以 buffer[4096] 对我来说很好,但我打算扩展它。WSAStartup()、socket()、bind()、listen()、accept() 函数工作正常,它们的值已为服务器和客户端初始化,但我正在处理其他问题,可能是 recv()、send()等我仍然找不到问题的根源。
此外,如果有人给我一个通过 TCP/IP 传输文件的示例,但不是在一个数据包中,我希望文件被分块并分部分发送,或者称为“环模型”,但我不能找不到工作模型;
PS这是我第一次在这里问,请反馈一下所有这些写得如何,这样我就可以写出更多信息以寻求社区帮助,谢谢)
服务器
char* buffer = new char[4096];
ZeroMemory(buffer, sizeof(buffer));
ofstream file("a.txt", ios::binary);
int err = recv(conn, buffer, sizeof(buffer), 0);
file << buffer;
file.close();
if (err == 0)
{
printf("Client diconnected...\n");
}
printf("Quitting...\n");
delete[] buffer;
客户
ifstream file("a.txt", ios::binary);
file.seekg(0, ios::end);
int size = file.tellg();
file.seekg(0, ios::beg);
char* buffer = new char[size];
file.read(buffer, size);
file.close();
int err = send(client, buffer, size, 0);
if (err == 0)
{
printf("Disconnecting...\n");
}
printf("Quitting...\n");
delete[] buffer;
客户端的“a.txt”文件是 45 字节,这里是 45 * 'a'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
这就是我在服务器端得到的,文件大小为 14 字节
aaaaaaaa ’pÈ/