|
|
- #include <stdio.h>
- #include <unistd.h>
- #include <netdb.h>
- #include <sys/socket.h>
- #include <sys/types.h>
- int main(int ac, char **av) {
- int ret,s;
- socklen_t len;
- struct hostent *hp;
- struct in_addr in;
- struct sockaddr_in remote_addr,addr;
- s = socket(AF_INET, SOCK_STREAM, 0);
- bzero(&local_addr, sizeof(remote_addr));
- remote_addr.sin_family = AF_INET;
- remote_addr.sin_port = htons(8080);
- hp = gethostbyname(av[1]);
- if (hp == NULL) {
- printf("gethostbyname failed\n");
- printf("it maybe an IP\n");
- exit(1);
- }
- memcpy(&remote_addr.sin_addr.s_addr, hp->h_addr, 4);
- printf("IP: %s\n", inet_ntoa(remote_addr.sin_addr));
- ret = connect(s, (struct sockaddr *) &remote_addr, sizeof(remote_addr));
- if (ret <0){
- perror("connect");
- exit(1);
- }
- printf("connected:%d\n",ret);
- // len = sizeof(addr);
- ret = getsockname(s, (struct sockaddr *)&addr, &len);
- printf("got ip:%s\n",inet_ntoa(addr.sin_addr));
- close(s);
- return(0);
- }
- # ./gethost theserver
- IP: 192.168.1.50
- connected:0
- got ip:192.168.1.3
复制代码
这个小程序目的是找到本机的ip,(而且我只能用这个办法!)
在这里没问题,但是移到我的程序里就完蛋了,返回的竟然是0.0.0.0 而且getsockname也没出错:mad: |
|