- 论坛徽章:
- 0
|
我将无双关于udp套接字的程序改动了一下,其中一个为被动接受者,一个为发送者,运行下来接受者在规定时间内无法接收包,调试了一下发现识recvfrom错了,但不知道错在哪里,请各位帮忙看看。
代码如下:#include <netinet/in.h>;
#include <sys/types.h>;
#include <sys/socket.h>;
#include <sys/time.h>;
#define SA struct sockaddr
#define SERV_PORT 9877
#define MAXLINE 1024
int main(int argc,char **argv)
{
int sockfd,count;
struct sockaddr_in servaddr,cliaddr;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(SERV_PORT);
bind(sockfd,(SA *)&servaddr,sizeof(servaddr));
count=udp_recv(sockfd,(SA *)&cliaddr,sizeof(cliaddr));
printf("%d\n",count);
}
int udp_recv(int sockfd,SA *pcliaddr,socklen_t clilen)
{
int n=0,ti=0;
socklen_t len;
char msg[MAXLINE];
struct timeval t1, t2;
struct timezone tz;
(void)gettimeofday(&t1, &tz);
while(ti<60)
{
(void)gettimeofday(&t2, &tz);
ti=(int)(t2.tv_sec-t1.tv_sec);
len=clilen;
recvfrom(sockfd,msg,MAXLINE,0,pcliaddr,&len);
n=n+1;
}
return n;
} |
|