我正在将Winsocks用于TCP客户端/服务器,它发送const char *, 问题是,一次调用send(clientsocket,sendBuffer,strlen(sendBuffer)+1,0) 分别发送char sendBuffer [512]中的每个字符,并由char接收char。理想情况下,我希望“一次”接收所有512个元素,但如果不可能的话,可以不使用它。
所以我需要找到一个终止字符,因为我的目标是发送文件,所以我需要一个在文件中找不到 的字符。这是我用来序列化文件的代码
char* read_file(string path, int& len)
{
std::ifstream infile(path);
infile.seekg(0, infile.end);
size_t length = infile.tellg();
infile.seekg(0, infile.beg);
len = length;
char* buffer = new char[len]();
infile.read(buffer, length);
return buffer;
}
string load_to_buffer()
{
char* img;
int ln;
img = read_file("C:\\Users\\they\\Documents\\sock.txt", ln);
string s = "";
for (int i = 0; i <= ln; i++){
s += *(img + i);
}
return s;
}
要发送的代码:
strcpy(SenderBuffer, s.c_str());
resend_packet:
iSend = send(TCPClientSocket, SenderBuffer, iSenderBuffer, 0);