通过套接字c ++流式传输.txt

时间:2012-03-08 09:25:19

标签: c++ sockets network-programming

我需要在客户端请求时通过套接字连接发送txt文件。问题是我无法想象如何从二进制格式转换为ASCII。使用此代码,客户端只接收垃圾字符。

ifstream file;
char output [logfilesize];

file.open( "log.txt" );

file >> output;
send(socket, output, sizeof(output), 0);
cout << output << endl;

file.close

很抱歉,如果问题被多次询问,但在阅读完所有帖子后,我无法想出如何使其发挥作用。

感谢的!


编辑:工作代码!

int lenght;
char * logf;
ifstream file;

file.open("log.txt");   
file.seekg(0, ios::end);
lenght = file.tellg();
file.seekg(0, ios::beg);
logf = new char [lenght];
file.read(logf, lenght);
file.close();

cout.write (logf, lenght);
send(soc,logf , lenght, 0);
delete[] logf;

1 个答案:

答案 0 :(得分:2)

sizeof(output)将返回您声明的原始数组的大小,而不是您通过stream运算符读取的字符数。如果您知道文件是文本(即您想要读取单个分隔的字符串),则只能使用文件流中的stream in运算符。否则,您应该通过read()调用从流中读取所需的字节数。如果是字符串,则使用strlen()函数确定字符串的长度(注意:这对二进制数据不起作用)。