首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

socket编程有关问题

2012-01-24 
socket编程问题为什么不能连接到目标机器.源代码:socksocket(AF_INET,SOCK_STREAM,0)structsockaddr_iny

socket编程问题
为什么不能连接到目标机器.

源代码:
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上的朋友.

[解决办法]
搞不懂VC.结分
[解决办法]
看看connect得返回码,看是什么错误
另外,都知道ip地址了,何必还用gethostbyname?
[解决办法]
连不上不光是客户的问题,还得看看你的服务端是怎么做的。
直接输入IP就可以了吧不用GETNAME
[解决办法]
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。
[解决办法]
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 ");


[解决办法]
用inet_addr就可以
long ad = inet_addr( "10.42.0.10 ");
memcpy(&your_addr.sin_addr, &ad, 4);
[解决办法]
这样看看

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));

热点排行