为什么不能连接到目标机器.源代码:
sock=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in your_addr;
hostent *hont;
hont=gethostbyname("10.42.0.10");
your_addr.sin_family=AF_INET;
your_addr.sin_port=htons(2000);
memcpy(&your_addr.sin_addr.S_un.S_addr,hont->h_name,hont->h_name,hont->h_length);
connect(sock,(struct sockaddr *)&your_addr,sizeof(your_addr));为什么老是连接失败?
初学socket,没有人指点,求助CSDN上的朋友.

解决方案 »

  1.   

    看看connect得返回码,看是什么错误
    另外,都知道ip地址了,何必还用gethostbyname?
      

  2.   

    连不上不光是客户的问题,还得看看你的服务端是怎么做的。
    直接输入IP就可以了吧不用GETNAME
      

  3.   

    memcpy(&your_addr.sin_addr.S_un.S_addr,hont->h_name,hont->h_name,hont->h_length);这个错了。mekmcpy只接收三个参数,hostent结构里,也没有h_name的成员。而且,正如楼上说的,都知道了IP地址了,还要用gethostbyname做什么呢?
    还有,最好的呢,调用了host = gethostbyname("...");后,要判断一下一host是不是等于 NULL。
      

  4.   

    memcpy(&your_addr.sin_addr.S_un.S_addr,hont->h_name,hont->h_name,hont->h_length);不对吧,能编译通过吗?
    your_addr.sin_addr.S_un.S_addr = htonl("10.42.0.10");
      

  5.   

    用inet_addr就可以
    long ad = inet_addr("10.42.0.10");
    memcpy(&your_addr.sin_addr, &ad, 4);
      

  6.   

    这样看看sock=socket(AF_INET,SOCK_STREAM,0);struct sockaddr_in your_addr;
    memset(&your_addr, 0, sizeof(sockaddr_in));your_addr.sin_addr.S_un.S_addr = inet_addr("10.42.0.10");
    your_addr.sin_family=AF_INET;
    your_addr.sin_port=htons(2000);connect(sock,(struct sockaddr *)&your_addr,sizeof(your_addr));
      

  7.   

    gethostbyname()
    的参数好像不是IP吧,应该是gethostname()后得到的计算机名字啊