一个ClientSocket与HTTP的问题?返回的数据只有前半部分(200分)

  • 主题发起人 主题发起人 buff
  • 开始时间 开始时间
B

buff

Unregistered / Unconfirmed
GUEST, unregistred user!
我写一个ClientSocket读取http 问题,block方式
self.ClientSocket1.Socket.SendText(cmd);
zeromemory(@recvBuff,65536*2-1);
self.ClientSocket1.Socket.ReceiveBuf(recvBuff,65536*2-1);
Memo1.text :=string(recvBuff);
可是返回的数据只有前半部分,我要如何才能读取后半部分呢?

好急呀,好几天了?分不够在加!拜托!
 
这大概是Socket包造成的,
我第一次用Socket时也遇到过类似的问题,
看你的代码,你只做了一次Receive,这样只收到发过来的第一个Socket包,
可以循环做接受操作,试一下,应该可以解决。
 
第一次返回头是这样的:
HTTP/1.1 200 OK
Date: Wed, 19 Nov 2003 05:30:35 GMT
Server: Apache/1.3.29 (Unix) mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.2 PHP/4.3.4 FrontPage/5.0.2.2634 mod_ssl/2.8.16 OpenSSL/0.9.6b
X-Powered-By: PHP/4.3.4
Set-Cookie: PHPSESSID=bd8a5bb253f17eb8af06c68b5b1b5d82; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

48a1

但是循环如何发送命令呢,不用发送什么给server吗?我确实至收了一次,我试图接受第二次,这样:
zeromemory(@recvBuff,65536*2-1);
self.ClientSocket1.Socket.ReceiveBuf(recvBuff,65536*2-1);
Memo1.text :=memo1.text+string(recvBuff);

但是返回是空的!
 
zeromemory(@recvBuff,65536*2-1);
应该是一句“清空缓冲区”吧,所以在他之后再写整个的接受循环。
你是不是在第一次接受以后做了一次清空,那到最后当然看不到东西了。
 
self.ClientSocket1.Socket.SendText(cmd);
zeromemory(@recvBuff,65536*2-1);
Memo1.text :='';
repeat
sleep(200);
i :=self.ClientSocket1.Socket.ReceiveBuf(recvBuff,65536*2-1);
Memo1.text :=Memo1.text+string(recvBuff);
application.ProcessMessages;
until i=0;
我更改成这样,还是有一部分没有读出来呢?是为什么呢?
 
"我更改成这样,还是有一部分没有读出来呢?是为什么呢?"
????
有变化还是原样?
 
有变化,返回数据多了好多!但是不知道为什么没有返回完呢?

我的qq:33293795
可以上qq指导一下吗?
 
>>buff
不是不给qq,是公司禁用“小企鹅”[:(]
“返回数据多了好多!”那说明原先的确是缺少接受循环。
“没有完全接受”,请从时间和缓冲区大小两个方面去考虑。
65536*2-1大概是缓冲区吧,我不清楚他和你现在的接收量相比如何。
 
这个是一个很大的65536*2-1缓冲区,接受回来大部分都有50-70k左右,现在文件可以接受完了,
但是有一个其它的问题出来了:
sendcmd1;
接受完毕返回数据;
sendcmd2;
接受数据,这个时候出现recv错误,说什么主动放弃一个recv错误。

这个有是什么问题呢?

公司禁用这个小企鹅好办,用代理http/socks都可以搞定的
http:
203.241.52.36:8000
218.75.121.3:8080
202.106.162.164:80
64.3.166.33:80
208.192.153.10:80
64.161.254.2:80
203.186.154.57:80
203.82.36.89:8080
217.97.49.65:80
80.26.124.174:80
80.24.156.20:80
63.196.219.20:80
61.132.90.4:8080
80.32.218.175:80
212.54.196.217:80
24.153.132.14:80
202.57.70.27:80
200.34.41.203:80
61.11.25.2:8080
164.164.88.134:8080
80.24.188.54:80
213.130.85.247:6588
212.119.82.227:8080
80.25.154.250:80
211.73.205.196:80
65.58.240.35:80
61.25.36.235:8080
socks:
200.80.161.131:1080
68.114.24.81:1080
81.6.51.122:1080
193.224.62.150:1080
68.224.248.71:22799
213.58.164.26:1080
218.247.228.90:1080
200.162.59.5:1080
68.2.80.116:1029
200.161.16.159:1080
219.238.38.252:1080
81.10.4.54:1080
 
先结贴,谁来回答一下,这个问题!
 
后退
顶部