sendto的问题(no route to host)

cooperdoctor 2010-07-24 09:53:51
本人写了段网络程序,其中在无限循环中调用了函数sendto,在向对方发送udp包的过程中,有时能够发送成功,有时却失败,错误号为113,错误原因为no route to host,下面是具体代码,向大侠请教错误原因


/*
* 在向对方的g_rport端口发送udp包的同时,还要不断监听本机的g_rport端口
*/
void send_hb_udp_msg()
{
int ret;
int sockfd;
int servfd;
char msg[512];
struct sockaddr_in toaddr, servaddr;

sockfd = socket(AF_INET, SOCK_DGRAM, 0); //发送socket
if (sockfd < 0)
{
wlog(log_die, "%s(%d)[%s], errno %d, %s",__FILE__, __LINE__, __FUNCTION__, errno, strerror(errno));
}

bzero(&toaddr, sizeof(toaddr));
toaddr.sin_family = AF_INET;
toaddr.sin_addr.s_addr = htonl(inet_addr(slave_ip)); //对方ip
toaddr.sin_port = htons(g_rport);


servfd = socket(AF_INET, SOCK_DGRAM, 0); //接收socket
if (servfd < 0)
{
wlog(log_die, "%s(%d)[%s], errno %d, %s",__FILE__, __LINE__, __FUNCTION__, errno, strerror(errno));
}

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(g_rport);


ret = bind(servfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); //接收socket绑定本地地址对
if (ret == -1)
{
wlog(log_die, "%s(%d)[%s], errno %d, %s",__FILE__, __LINE__, __FUNCTION__, errno, strerror(errno));
}

//get host name;
char hostname[32];
gethostname(hostname, sizeof(hostname));

fd_set rset;
FD_ZERO(&rset);
FD_SET(servfd, &rset);

while(1)
{
snprintf(msg, sizeof(msg), "%s,%d,%d", hostname, server_status, random_num);

ret = sendto(sockfd, msg, strlen(msg), 0,(struct sockaddr *)&toaddr, sizeof(toaddr));

if (ret == -1)
{
wlog(log_info, "errno:%d, %s", errno, strerror(errno));
continue;
}

struct timeval tv;
tv.tv_sec = 1;
tv.tv_usec = 0;

ret = select(1, &rset, NULL, NULL, &tv);
if (ret == -1)
{
wlog(log_die, "errno %d, %s", errno, strerror(errno));
}
else if (FD_ISSET(servfd, &rset))
{
// 省略
}
}
}
...全文
1636 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gx303841541 2011-10-26
  • 打赏
  • 举报
回复
解决了没啊?
mrdone 2011-08-01
  • 打赏
  • 举报
回复
碰到相同的问题,帮顶!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧