在从文件中读取数据并将数据发送到服务器时附加字符
Characters are appended while reading from a file and sending data to server
我正在从文件中读取数据,并使用windows套接字将其发送到服务器。代码如下:
//Socket creation and setup code
long Begin;
long End;
char * block;
ifstream myfile;
myfile.open(filepath, ios::in | ios::binary);
Begin = myfile.tellg();
myfile.seekg(0,ios::end);
End = myfile.tellg();
unsigned long size = End - Begin;
int Div = (int)size / 1024;
int Mod = (int)size % 1024;
int len = strlen(name);
send(theSocket,(const char*)&len,sizeof(int),0);
send(theSocket,name,strlen(name),0);
send(theSocket, (const char*)&size, sizeof(unsigned long), 0);
block = new char[1024];
for (int i=0; i<Div; i++)
{
myfile.seekg(i*1024);
myfile.read(block,1024);
cout << block << endl;
send(theSocket,block,1024,0);
}
if (Mod != 0)
{
block = new char[Mod];
myfile.seekg(Div*1024);
myfile.read(block,Mod+1);
send(theSocket,block,Mod,0);
}
delete [] block;
myfile.close();
closesocket(theSocket);
WSACleanup();
我遇到的问题是,当我从文件中读取数据到block
时,它在末尾附加了一些奇怪的字符。这样的字符是相同的每一次=> "yyyy««««««««我þþ"。
您看到一些垃圾字符的可能原因是:
block = new char[1024];
...
myfile.seekg(i*1024);
myfile.read(block,1024);
cout << block << endl;
您正在读取1024个字符到char
数组中,然后将其传递给std::cout
。当您将char*
(这是字符数组的引用方式)传递给std::cout
时,它期望它以零终止。要做到这一点,需要block
数组的大小为1025,并确保最后一个字节为零(block[1024] = 0;
)。如果没有这个零终止,输出将是数组后面的随机内存值。
还需要注意的是,如果您将0作为数据的一部分读入,那么在输出到cout
时,这也将被视为终止字符串。
相关文章:
- 将相机数据从服务器实时流式传输到客户端
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- Arduino UNO+SIM800L-向服务器发送数据
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- Java 客户端C++服务器数据发送/接收问题
- QTcpSocket 在 RemoteHostClosedError 后重新连接到服务器时无法传输数据
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何使用软化工具包从 OPC UA 服务器异步读取操作回调中的数据值响应中获取 NodeId 详细信息
- 如何在C++中使用带有SFML的http reqest从节点.js服务器获取数据?
- 在 MySQL 中运行 HTTP 服务器以从客户端接收数据
- 使用 Broadcast 发出的从节点服务器发送的数据不能被 C++ 套接字 IO 客户端读取
- 如何使用 asio 本地数据报构建回显服务器和客户端?
- 将数据包从C++服务器发送到NodeJs服务器时出现MessagePack解码错误
- 如何使用gRPC在客户端和服务器之间双向发送和接收流元数据
- 通过TCP将数据从C++客户端发送到JSON服务器
- 如何使客户端在将数据写入 C++ 管道之前检查服务器是否完成了从管道的读取操作
- C++中从客户端到服务器的数据传输问题
- Qt TCP服务器不从客户端读取数据
- 如何使用 C++ 中的 cpprestsdk 发布 json 数据并从本地服务器获取响应