当前位置:  技术问答>linux和unix

关于模拟socket中SIGPIPE信号的问题

    来源: 互联网  发布时间:2017-05-02

    本文导语:  我在论坛上看到以下两段话: “在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。 在Unix系统下,如果recv函数在等待协议接收...

我在论坛上看到以下两段话:
“在Unix系统下,如果send在等待协议传送数据时网络断开的话,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
在Unix系统下,如果recv函数在等待协议接收数据时网络断开了,那么调用recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。”

1,不过不是很理解,主要是对于“协议传送数据时”和“协议接收数据时”不知道是什么时候?又该如何模拟呢?
2,还有我想分别模拟send和recv产生SIGPIPE,模拟send函数产生SIGPIPE还是很简单的,就对关闭的socket发送两次send,就会产生SIGPIPE,但是如何模拟recv函数产生SIGPIPE呢?


#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

typedef void (*sighandler_t)(int);

void sig_pipe(int signo)
{
printf("捕获到SIGPIPE信号!n");
}

int main()
{
struct sockaddr_in client_addr;
bzero(&client_addr,sizeof(client_addr));
    
client_addr.sin_family = AF_INET; 
client_addr.sin_addr.s_addr = htons(INADDR_ANY);
client_addr.sin_port = htons(0); 
int client_socket = socket(AF_INET,SOCK_STREAM,0);
if( client_socket 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下socket模拟telnet功能的程序,急求
  • Android 模拟器(JAVA)与C++ socket 通讯 分享
  • linux socket编程问题,下面是我做的一个简单的模拟银行排队叫号系统。
  • 电路教学模拟器 稳恒电路模拟器
  • php模拟登录 php curl模拟登录教程大全
  • 在Android模拟器上模拟GPS功能总是null的解决方法
  • Intel HAXM为Android 模拟器加速解决模拟器运行慢的问题
  • php模拟qq登录 php模拟登录实例
  • ◆◆◆◆◆◆◆j2me中,用repaint()在同一地方重画图象,当我画到二十几遍后,手机模拟器就出错或者程序自动退出。我想是不是由于重画时,以前的图片好保存在模拟器的内存中,当重画到一定数时,内存不够,便出错了。还是其他的原因?请问如何解决?
  • 指令级机器模拟器 GXemul
  • FC模拟器 Nintendulator
  • 任天堂游戏模拟器 VisualBoyAdvance
  • 在线模拟考试系统 PHPems
  • EFL设计示波器,模拟量输入的问题
  • PSP模拟器 JPcsp
  • 电路模拟器 Qucs
  • JavaScript 模拟器库 Virtjs
  • 单元测试模拟框架 PowerMock
  • Linux游戏模拟器 Xmame
  • 微控制器模拟器 PICsim
  • NDS模拟器 DeSmuME
  • FC 模拟器 Nestopia
  • PS2模拟器 PCSX2


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,