我的一个服务器程序,采用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...
//netdump.c
#include
我的代码如下: 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...
以下是一段代码 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); /* 主机字节顺序 */ ...
各位大侠,小弟遇到一个问题,一个已经设置为非阻塞socket的socket在某种异常情况下(如反复拔插设备网线时会出现)recvfrom时居然阻塞住了,大家有遇到同样的问题么?有什么可能导致此问题发生? ....... ioctl(sock, FIONBIO, &TRUE); ..... recvlen = recvfrom( sock ,buf,len,0,(SOCKADDR*)&from,(socklen_t*)&fromlen ); ps:程序中由于公司历史原因未使用select,而是使用的while(1)+sleep的方式,我想尽管可能会有问题,但是...
各位兄弟,本人程序遇到奇怪的问题,描述如下: 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,...
c/s采用UDP连接方式,使用sendto()和recvfrom()收发数据,客户端注册一个接收SIGALRM信号的信号处理程序。 假如在客户端recvfrom()服务端发送的数据的时候,产生一个SIGALRM信号,因此客户端执行信号处理程序(加入信号处理程序 只有简单的return语句),当从信号处理函数返回的时候,recvfrom()为什么返回值不是小于0?errno为什么不是EINTR?
先贴出部分代码: #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...
开发环境:Linux4 Enterprise(内核:2.6) 的虚拟机/vi编辑器 问题描述: 服务器端代码: n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(structaddr*)&addr,&addrlen); 客户端向服务器端发送msg后,服务器端能收到,但是,在服务器端不能获取正确的发送方的IP地址。 各位大虾,有什么见解的,还望指点。已经困住我几天了。
我在写一个简化的link-state router的模拟,现在的情况是,需要每秒钟执行一个checking routine,整个过程中都要用recvfrom来接受数据包。把程序简化之后大致是这个样子:
[CODE]
#include