C / C ++服务器不发送最后几行文件

时间:2013-02-08 02:15:03

标签: c++ c sockets

我正在用C / C ++编写一个简单的服务器。我有一切都很完整,但有一个问题。服务器无法将文件的最后三行发送到客户端。我假设我过早地关闭了套接字连接,但是我试图解决这个问题却失败了。例如,调用

shutdown(clientSckt, SHUT_RDWR);

在调用客户端套接字的close()方法之前。并为套接字参数添加延迟,如下所示:

struct linger l;
l.l_onoff = 1;
l.l_linger = 1;
setsockopt(clientSckt, SOL_SOCKET, SO_LINGER, &l, sizeof(l));

打开后。但这些似乎都不起作用。服务器写入所有内容没有错误,但客户端没有收到任何内容。

2 个答案:

答案 0 :(得分:1)

来自模糊的记忆: a)如果你想使用SO_LINGER,请使用close()。 b)更强大的是半关闭

shutdown(clientSckt, SHUT_WR)

然后读取()直到得到0。

答案 1 :(得分:0)

事实证明,我忘了将标题的字符长度添加到我发送的文件的长度。因此,客户端在服务器发送所有内容之前关闭了连接。