CSDN论坛 > Linux/Unix社区 > 应用程序开发区

(请高手救命啊!在线等)Socket Send的时候,不停的得到EINTR错误返回, 请问是为什么? [问题点数:0分]

Bbs1
本版专家分:29
结帖率 100%
CSDN今日推荐
Bbs1
本版专家分:29
Bbs7
本版专家分:21694
Blank
红花 2003年1月 Linux/Unix社区大版内专家分月排行榜第一
2002年12月 Linux/Unix社区大版内专家分月排行榜第一
2002年8月 Linux/Unix社区大版内专家分月排行榜第一
2002年2月 专题开发/技术/项目大版内专家分月排行榜第一
2001年7月 专题开发/技术/项目大版内专家分月排行榜第一
Blank
黄花 2010年8月 Linux/Unix社区大版内专家分月排行榜第二
2010年7月 Linux/Unix社区大版内专家分月排行榜第二
Blank
蓝花 2010年9月 Linux/Unix社区大版内专家分月排行榜第三
2003年7月 Linux/Unix社区大版内专家分月排行榜第三
2002年3月 专题开发/技术/项目大版内专家分月排行榜第三
2001年8月 专题开发/技术/项目大版内专家分月排行榜第三
Bbs1
本版专家分:29
Bbs1
本版专家分:29
Bbs1
本版专家分:5
Bbs1
本版专家分:5
Bbs6
本版专家分:5701
Bbs2
本版专家分:323
Bbs3
本版专家分:839
Bbs2
本版专家分:290
Bbs3
本版专家分:724
Bbs1
本版专家分:42
匿名用户不能发表回复!
其他相关推荐
linux网络编程之慢系统调用被信号中断产生EINTR错误怎么解决总结
1、介绍慢系统调用 该术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就会一直阻塞。 慢系统调用可以被永久阻塞,包括以下几个类别: (1)读写‘慢’设备(包括pipe,终端设备,网络连接等)。读时,数据不存在,需要等待;写时,缓冲区满或其他原因,需要等待。读写磁盘文件
Socket中send()函数和recv()函数详解
1、send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。 客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。 (1)第一个参数指定发送端套接字描述符; (2)第二
EAGAIN、WOULDBLOCK、EINTR与非阻塞模式和长连接socket
EAGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接 EWOULDBLOCK用于非阻塞模式,不需要重新读或者写 EINTR指操作被中断唤醒,需要重新读/写 在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。 从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blo
Linux编程下EAGAIN和EINTR宏的含义及处理
Linux中的EAGAIN含义   在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。   linux下使用write\send发送数据报 EAGAIN : Resource temporarily unavailable 错   首先是我把套接字设置为异步的了,然后在使用write发送数据时采取的方式是循环发送大量的
Linux下非阻塞Socket发送错误返回
项目中使用原有的网络发送代码进行数据传输,发现总是发不过去,或者发过去一部分,非常纳闷。 经过仔细排查,是Socket的send函数调用结果处理不正确造成的。 原有代码: int SendData( char *data,int length ) { int ret; int cur_pos = 0; while(cur_pos < length) { ret = send(ha
socket函数一直返回-1的问题
今天遇到了一个SOCKET初始化的问题,运行平台在linux中,在windows中调试,就出现了socket一直返回-1的错误。 经网上查找后得以解决,解决办法是增加了两段代码,在windows中要使用socket,需要先注册。 以下为示例代码 //初始化TCP Result TcpClient_Init(int localPort) { //add by guoyong Use t
recv函数返回值总结
函数原型:int recv( SOCKET s, char *buf, int  len, int flags) 功能:不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。 参数一:指定接收端套接字描述符; 参数二:指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 参数三:指明buf的长度; 参数四 :一般置为0。
Socket 错误返回码
Socket error 0 - Directly send error  Socket error 10004 - Interrupted function call  Socket error 10013 - Permission denied  Socket error 10014 - Bad address  Socket error 10022 - Invalid argumen
socket函数返回值分析
服务端: 1 WSAStartup(版本,本机的最高版本) WSAStartup函数的第一个参数是加载WinSock库的版本,WSAStartup函数的第二个参数中设置使用的WinSock库的版本,当正确初始化时,WSAStartup会返回0。但我在WSAStartup函数的第一个参数中胡乱设置了一个版本号,WSAStartup仍然会返回0。 如果在WSAStartu
socket编程 recv()返回值处理
 一般在经典的socket教程中,调用send()和recv()时都会判断一下返回值,如果返回值是-1(或者SOCKET_ERROR),那么就进行错误处理(一般是打印出错信息,关闭socket,退出)。在我的一个项目中我因为嫌麻烦就想当然没有判断send和recv的返回值,结果遇到了点小麻烦。简单地说明一下问题:服务器端支持多线程,每个线程用while(1)循环地接收客户端的请求并加以
关闭