当前位置: 技术问答>linux和unix
unp(3rd) 非阻塞connect Web客户程序,connect()无法成功
来源: 互联网 发布时间:2017-03-18
本文导语: P357页 的home_page() 调用了 tcp_connect() (P255) ,但是我运行可执行程序 ,都出错在tcp_connect()函数,其中的connect()都建立不了连接。 perror()显示 Invalid arguments 错误。 我链接的域名 www.baidu.com 等网站, 我的网络...
P357页 的home_page() 调用了 tcp_connect() (P255) ,但是我运行可执行程序
,都出错在tcp_connect()函数,其中的connect()都建立不了连接。 perror()显示 Invalid arguments 错误。
我链接的域名 www.baidu.com 等网站, 我的网络绝对OK,不知道怎么办?那位大侠帮帮忙!!!感激不尽
,都出错在tcp_connect()函数,其中的connect()都建立不了连接。 perror()显示 Invalid arguments 错误。
我链接的域名 www.baidu.com 等网站, 我的网络绝对OK,不知道怎么办?那位大侠帮帮忙!!!感激不尽
|
我复制了代码,没有问题啊。只是段代码与“非阻塞”没有关系啊。
fb82:/home/mymtom/src/tcp$ cat tcp.c
#include
#include
#include
#include
#include
#include
#include
#include
int tcp_connect(const char *host,const char *serv)
{
int sockfd,n;
struct addrinfo hints,*res,*ressave;
bzero(&hints,sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
if((n = getaddrinfo(host,serv,&hints,&res)) != 0)
{
perror("get addrinfo errorn");
exit(0);
}
ressave = res;
if(ressave == NULL)
{
printf("can't get the addrinfon");
}
do
{
sockfd = socket(res->ai_family,res->ai_socktype,res->ai_protocol);
if(sockfd ai_addr,res->ai_addrlen) == 0)
break;
close(sockfd);
}while((res = res->ai_next) != NULL);
if(res == NULL)
{
perror("tcp connect errorn");
exit(0);
}
freeaddrinfo(ressave);
return sockfd;
}
int main(int argc, char *argv[])
{
int sockfd;
sockfd = tcp_connect("www.baidu.com", "80");
system("netstat -nf inet | grep tcp | grep '.80 '");
close(sockfd);
return 0;
}
fb82:/home/mymtom/src/tcp$ make tcp
cc -O2 -pipe tcp.c -o tcp
fb82:/home/mymtom/src/tcp$ ./tcp
tcp4 0 0 192.168.118.130.43549 119.75.217.56.80 ESTABLISHED
fb82:/home/mymtom/src/tcp$
|
说明connect参数传错了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。