问题描述
|
它并不总是发生,但是会在服务器应用程序运行了一段时间后发生。
原因是什么,我该如何解决?
代码如下:
struct hostent* Host;
Result->sin_family=AF_INET;
Result->sin_port=htons((unsigned short)Port);
Host=gethostbyname(HostName);
if(!Host)
{
unsigned long int addr=inet_addr(HostName);
if(addr!=-1)
Host=gethostbyaddr(&addr,sizeof(addr),AF_INET);
if(!Host)
{
if(errno!=ETIMEDOUT)
errno=-1; /* use h_errno */
printf(\"Unknown host for server [%s].\",HostName);
return(0);
}
}
memcpy((char*)&Result->sin_addr,(char*)Host->h_addr,sizeof(Result->sin_addr));
核心转储:
#0 0x0000000000401913 in proxy_getaddr (HostName=0x7ae30be0 \"stackoverflow.com\",Port=80,Result=0x7ae30bd0) at proxy.c:529
529 memcpy((char*)&Result->sin_addr,sizeof(Result->sin_addr));
(gdb) p *Host
$4 = {h_name = 0xc4ee048 \"\",h_aliases = 0xc4ee030,h_addrtype = 2,h_length = 4,h_addr_list = 0xc4ee038}
(gdb) print Result
$5 = (struct sockaddr_in *) 0x7ae30bd0
(gdb) print *Result
$6 = {sin_family = 2,sin_port = 20480,sin_addr = {s_addr = 0},sin_zero = \"\\000\\000\\000\\000\\000\\000\\000\"}
(gdb) p Host->h_addr_list[0]
$1 = 0x0
(gdb) p Host->h_addr_list
$2 = (char **) 0x1bd9d050
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)