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

Indy组件 TCPClient 访问 网页,该怎么解决

2012-12-23 
Indy组件 TCPClient 访问 网页百度IP 202.108.22.5,与服务端链接成功后,服务端发送百度首页的源代码,但是

Indy组件 TCPClient 访问 网页


百度IP 202.108.22.5,
与服务端链接成功后,服务端发送百度首页的源代码,但是客服端接收不到,一直跑空,如果服务端发送的是别的数据(123456)或者字符串(我我我我我我),接收正常
读取数据用的 TCPClient->ReadLn();

新手,望高人指导

[最优解释]
哪个IP地址换了?Server还是Client?
在TCPServer里更改属性影响到了TCPClient?
[其他解释]
双引号不是什么问题,用转义符反斜杠。
[其他解释]
你要这样做的,最简单的 IdTCPClient 获取 HTTP 页面内容


IdTCP->Host = "202.108.22.5";
IdTCP->Port = 80;

IdTCP->Connect();

IdTCP->IOHandler->WriteLn("GET " + S + " HTTP/1.1");
IdTCP->IOHandler->WriteLn("Host: " + IdTCP->Host);
IdTCP->IOHandler->WriteLn("Accept: text/html, */*");
IdTCP->IOHandler->WriteLn("Accept-Encoding: identity");
IdTCP->IOHandler->WriteLn("User-Agent: Mozilla/3.0 (compatible; Indy Library)");
IdTCP->IOHandler->WriteLn("Connection: Keep-Alive");
IdTCP->IOHandler->WriteLn();

bool HttpOK = false;
int ResponseLen = 0;
String S;

do
{
S = IdTCP->IOHandler->ReadLn();

if (S == "HTTP/1.1 200 OK") HttpOK = true;
else if (S.Pos("Content-Length:") == 1)
{
S.Delete(1, S.Pos(" "));
ResponseLen = S.ToIntDef(0);
}
}
while (S.Length());

if (HttpOK && ResponseLen)
{
S = IdTCP->IOHandler->ReadString(ResponseLen, TEncoding::Default);
  
      //  S 就是接收到的页面内容

}

[其他解释]
把源码当成普通字符串发送,是不是有什么特殊字符
[其他解释]
引用:
把源码当成普通字符串发送,是不是有什么特殊字符


有双引号,如果有的话,该怎么修改
[其他解释]
不是有idhttp控件吗 
[其他解释]
引用:
双引号不是什么问题,用转义符反斜杠。


换个 IP 就不行了,报错 socket 10049,再换成之前的IP,先前的IP也不行了,报同样的错,网上说的端口或IP冲突我觉得都不像,我只是在IdTCPServer组件的属性Bindings里更改了一下,其他的都没动,然后把文件全删了,复制之前的,又好了
[其他解释]
引用:
哪个IP地址换了?Server还是Client?
在TCPServer里更改属性影响到了TCPClient?


TCPServer 和 TCPClient 一同更改的
[其他解释]
10049的意思是IP地址或端口无效,是不是服务器机器的IP地址没改过来?
这个错误发生在服务器端还是客户端,是在哪个环节?连接或是接收?
[其他解释]
引用:
10049的意思是IP地址或端口无效,是不是服务器机器的IP地址没改过来?
这个错误发生在服务器端还是客户端,是在哪个环节?连接或是接收?


服务器端,服务器端代码里一点都没涉及IP地址和端口,只有一个Button的Click来激活TCPServer,然后就是OnExecute里的数据处理了,涉及IP地址和端口的地方只有Bindings和DefaultPort,我更改了IP地址(192.168.1.1变成192.168.2.107),端口一直是1026,只要一点击Button,服务器端就报 10049 ,很奇怪
------其他解决方案--------------------


电脑的IP我也相应的变化
[其他解释]
服务器本机的ip地址是多少?如果不是192.168.2.107,那肯定绑定不上去
[其他解释]

引用:
服务器本机的ip地址是多少?如果不是192.168.2.107,那肯定绑定不上去



192.168.1.1时设置的是:
IP  地址:192.168.1.1
子网掩码:255.255.255.0
默认网关:192.168.1.1

这个单独试是可以的

192.168.2.107是设置:
IP  地址:192.168.2.107
子网掩码:255.255.255.0
默认网关:192.168.2.1

这个单独试也是可以的,第一种换成第二种就会报错,重新启动还是一样

[其他解释]
什么情况下第一种换成第二种,是在程序运行过程中,服务器本机的IP地址发生变化,导致服务器程序报错?
[其他解释]
引用:
什么情况下第一种换成第二种,是在程序运行过程中,服务器本机的IP地址发生变化,导致服务器程序报错?


是在程序关闭的情况下,更改服务端和客服端的IP
[其他解释]
引用:
是在程序关闭的情况下,更改服务端和客服端的IP

是不是再重新启动程序时,重新设置TCPServer中绑定的IP地址后,再启动TCPServer时出的错?
[其他解释]
引用:
是不是再重新启动程序时,重新设置TCPServer中绑定的IP地址后,再启动TCPServer时出的错?


重新启动程序之前,服务端和客户端全都设置好了以后,才启动的
[其他解释]
服务器IP地址更改后,TCPServer控件所绑定的IP地址也应相应重新设置,如果不重新设置,应该就会出10049错误,如果重新设置之后仍出这个错误,就可能是其它原因,不知你是哪种情况
[其他解释]
引用:
服务器IP地址更改后,TCPServer控件所绑定的IP地址也应相应重新设置,如果不重新设置,应该就会出10049错误,如果重新设置之后仍出这个错误,就可能是其它原因,不知你是哪种情况


谢谢了

热点排行