ChinaUnix.net
相关文章推荐:

recvfrom 非阻塞

如何把recvfrom设置成阻塞

by wangqi0021 - C/C++ - 2008-05-16 13:05:00 阅读(5894) 回复(4)

相关讨论

我的一个服务器程序,采用udp通信,向客户端一直发送数据,在客户端用linux下的抓包工具能收到,但是到了程序里却没有反应,请问是什么缘故阿? 使用recvfrom函数,就一直被阻塞在那里了. 客户端程序很简单的。。。 char recv_buf[20]; int sockfd; int nrecv; if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); exit(1); } while ( 1 ){ nrecv = recvfrom(sock...

by panstone - C/C++ - 2007-09-27 08:42:49 阅读(14642) 回复(17)

//netdump.c #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #include ; #includ...

by lifeixiao - C/C++ - 2005-01-31 21:33:53 阅读(3781) 回复(2)

我的代码如下: ah_int_t ah_pro_client_listen(ah_char_t *prorxpkt, ah_uint32_t * pktlen) { ah_uint_t len = 0; ah_uint_t fromlen = 0; ah_uint_t from_len = 0; fd_set fdR; ah_uint_t max_socket = 0; ah_int_t rc = 0; struct sockaddr_in from; struct sockaddr_in from_ssl; struct timeval prosel = {0,500...

by godguy - C/C++ - 2007-11-16 15:04:54 阅读(2941) 回复(2)

以下是一段代码 int main() { /* 变量定义 */ int sockfd; /* 接受 socket 套节字 */ int ret; /* 计数器 */ int length; /* split数组长度 */ char buf[2048]; struct sockaddr_in addr; /* create socket */ sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* 主机字节顺序 */ ...

by stiandao - C/C++ - 2007-03-07 23:40:23 阅读(2123) 回复(4)

各位大侠,小弟遇到一个问题,一个已经设置为阻塞socket的socket在某种异常情况下(如反复拔插设备网线时会出现)recvfrom时居然阻塞住了,大家有遇到同样的问题么?有什么可能导致此问题发生? ....... ioctl(sock, FIONBIO, &TRUE); ..... recvlen = recvfrom( sock ,buf,len,0,(SOCKADDR*)&from,(socklen_t*)&fromlen ); ps:程序中由于公司历史原因未使用select,而是使用的while(1)+sleep的方式,我想尽管可能会有问题,但是...

by weweyangyang - C/C++ - 2009-08-31 17:22:16 阅读(1650) 回复(2)

各位兄弟,本人程序遇到奇怪的问题,描述如下: OS:linux 函数:recvfrom 现象:当接收流量较少的情况下,该系统调用工作完全正常,在接受流量大的情况下,出现EFAULT错误。 经查,EFAULT错误是由于参数的问题引起的。 我的recvfrom调用如下: recvfrom(rr_sock, (void *)buffer, sizeof(buffer), 0, (struct sockaddr *)&addr, (socklen_t *)&addr_len); 在出现EFAULT错误后,打印buffer,addr,addr_len的地址,发现addr,...

by guotie - C/C++ - 2009-04-20 10:08:44 阅读(1565) 回复(3)

c/s采用UDP连接方式,使用sendto()和recvfrom()收发数据,客户端注册一个接收SIGALRM信号的信号处理程序。 假如在客户端recvfrom()服务端发送的数据的时候,产生一个SIGALRM信号,因此客户端执行信号处理程序(加入信号处理程序 只有简单的return语句),当从信号处理函数返回的时候,recvfrom()为什么返回值不是小于0?errno为什么不是EINTR?

by xiaozhu2007 - C/C++ - 2008-08-17 23:06:38 阅读(3117) 回复(6)

先贴出部分代码: #define SA struct sockaddr int n; socklen_t len; char mesg[MAXLINE]; SA* pcliaddr; for ( ; ; ) { len = sizeof(pcliaddr); n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len); printf("i have received messages\n"); printf("The numbers of the charactors I have re...

by kuige0803 - C/C++ - 2007-07-18 17:16:45 阅读(1422) 回复(5)

开发环境:Linux4 Enterprise(内核:2.6) 的虚拟机/vi编辑器 问题描述: 服务器端代码: n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(structaddr*)&addr,&addrlen); 客户端向服务器端发送msg后,服务器端能收到,但是,在服务器端不能获取正确的发送方的IP地址。 各位大虾,有什么见解的,还望指点。已经困住我几天了。

by xnxubin - 程序开发 - 2006-06-22 17:48:13 阅读(737) 回复(5)

我在写一个简化的link-state router的模拟,现在的情况是,需要每秒钟执行一个checking routine,整个过程中都要用recvfrom来接受数据包。把程序简化之后大致是这个样子: [CODE] #include #include #include #include #include #include #include #include #include void sig_alrm(int signo) { static ...

by angelo23 - C/C++ - 2006-04-25 15:57:32 阅读(2006) 回复(4)