调试套接字程序

时间:2017-04-11 14:42:57

标签: c sockets network-programming

我目前正在使用C语言中的文件服务器。

当客户端从服务器请求文件时,它会写入套接字。然后,服务器回写带有标头的数据。客户端读取标头然后读取实际数据。在调试客户端时,服务器会在客户端有机会读取数据之前终止连接。

为了解决这个问题,我在客户端完成时输入代码将0的字节写入服务器。服务器最后读取了套接字,查找该字节但是当客户端在调试器下运行时,它不会等待服务器上的读取。

在服务器上使用以下调用创建套接字:
         int socketId = socket(AF_INET, SOCK_STREAM, 0);

我该怎么办?

3 个答案:

答案 0 :(得分:0)

编写客户端 - 服务器代码存在许多挑战。在这种情况下,您也在编写协议但可能没有意识到。您的协议需要以一种方式定义,以便明确通信的每一方所期望的内容,并且这些方案非常重要。

以下是一些相关问题:
(java)basic java socket programming problem
(c)Socket Programming Problem
(c)Socket Programming -- recv() is not receiving data correctly

答案 1 :(得分:0)

如果文件包含0的字节怎么办?

你不需要这个。只需关闭插座即可。如果对等方收到一个干净的关闭,它必须已经收到整个文件。

听起来你没有在未发布的代码中检查错误。

答案 2 :(得分:0)

我们昨天发现了这个问题。由于变量被声明为错误类型,客户端写入的字节数超过服务器读取的字节数。感谢您的回复。

鲍勃