我在FTP实现中的打开的数据套接字上使用write()来发送文件。但在编写一些数据之后,它已经挂了一段时间了;之后它将返回Broken pipe错误。任何帮助,将不胜感激。我的进程从一个buff读取数据包并写入套接字。我注意到这个问题增加了带宽。如果我增加了要处理的数据包数量,那么问题就来了。我正在使用FreeBSD。断管错误
我使用两个线程之一读取数据包并写入缓冲区......第二个线程从缓冲区中读取这些数据包并写入套接字。
感谢您的帮助 亚历山大
我在FTP实现中的打开的数据套接字上使用write()来发送文件。但在编写一些数据之后,它已经挂了一段时间了;之后它将返回Broken pipe错误。任何帮助,将不胜感激。我的进程从一个buff读取数据包并写入套接字。我注意到这个问题增加了带宽。如果我增加了要处理的数据包数量,那么问题就来了。我正在使用FreeBSD。断管错误
我使用两个线程之一读取数据包并写入缓冲区......第二个线程从缓冲区中读取这些数据包并写入套接字。
感谢您的帮助 亚历山大
EPIPE
可以被设置为一个错误代码,和/或SIGPIPE
上调(取决于标志),当您试图写入已关闭的文件描述符。连接的远程端点很可能已关闭,并且您尚未检查close/EOF事件(通常在poll
/select
ing或read
/recv
的返回值为零时通过读取事件返回)。
您尚未提供足够的信息来诊断问题。一个好的起点是能够证明问题的最小可编译代码片段。 – 2010-08-12 15:57:18
我使用两个线程读取数据包并写入缓冲区......第二个线程从缓冲区读取这些数据包并写入套接字。 – alexander 2010-08-12 16:25:04
我不知道你为什么使用线程?通常程序只是读取和写入,使用非阻塞IO和轮询或选择。线程将*工作*,但为种族和怪异的错误带来如此多的机会... – 2010-08-12 22:03:19