Sockets 如何注入;“断管”;错误?

Sockets 如何注入;“断管”;错误?,sockets,networking,tcp,Sockets,Networking,Tcp,我正在运行一个使用TCP套接字的网络程序的测试。为了验证bug修复,我需要在套接字层复制一个“断管”错误,但我不知道如何进行。有什么想法吗?非常感谢。当shell检测到它创建的子级由于SIGPIPE信号而退出时,通常会发出“断管”错误消息。因此,您可以通过使用SIGPIPE(杀死第一个后台命令的kill-PIPE%1)杀死一个孩子来手动导致一个错误 SIGPIPE由内核生成,并发送给在另一端关闭后尝试写入管道或套接字的任何进程。“断开的管道”表示您已写入已被对等方关闭的连接。因此,让对等方关闭连

我正在运行一个使用TCP套接字的网络程序的测试。为了验证bug修复,我需要在套接字层复制一个“断管”错误,但我不知道如何进行。有什么想法吗?非常感谢。

当shell检测到它创建的子级由于SIGPIPE信号而退出时,通常会发出“断管”错误消息。因此,您可以通过使用SIGPIPE(杀死第一个后台命令的
kill-PIPE%1)杀死一个孩子来手动导致一个错误


SIGPIPE由内核生成,并发送给在另一端关闭后尝试写入管道或套接字的任何进程。

“断开的管道”表示您已写入已被对等方关闭的连接。因此,让对等方关闭连接。

我四处查看,找不到记录在案的程序,所以给你

我在ssh配置中发现了一个使用“nc”代理命令的服务器

主机服务器

ProxyCommand/usr/bin/nc-4-n-x5-x127.0.0.1:55555%h%p

我运行了一个ssh,ServerAlive选项设置为1:

>ssh-o ServerAliveInterval=1-o ServerAliveCountMax=1e3prosup@server

然后在另一个会话中,我找到了与ssh关联的“nc”进程并将其终止。kill-9(SIGKILL)或kill-13(SIGPIPE)都可以工作

>ps-全民教育

e3prosup 19502 10955 0 11:43 pts/6 00:00:00 ssh-o ServerAliveInterval=1-o ServerAliveCountMax=1e3prosup@server

e3prosup 19503 19502 0 11:43 pts/6 00:00:00/usr/bin/nc-4-n-X 5-X 127.0.0.1:55555服务器22

>基尔-13 19503

现在ssh会话得到:

e3prosup@server>写入失败:管道断开


我让代码检查“send()”的返回值,并使用“perror()”打印错误。如果这是一个真正的“断管”,佩罗将打印出来。但是对于你的方法,程序退出时没有打印任何错误。然后你在某个地方丢失了一个测试,或者程序已经发送了大部分数据。是的,理论上。在我的代码中,我尝试通过close()、exit()甚至“ctrl-C”退出接收器。没有任何内容会导致发件人打印“断管”错误。请再发送一些。没有人说这是瞬间的。例如,由于TCP缓冲,它不能发生在中断后的第一次发送中。此外,发送方也不一定会打印任何内容,除非它被编程为在每次发送()错误时都打印。是的,我发送了大量数据并减慢了网络速度,在传输过程中杀死了接收方。谢谢。问题中没有一个词是关于
ssh