小弟现有一CLIENTSOCKET问题请教。 (100分)

  • 主题发起人 主题发起人 solin
  • 开始时间 开始时间
S

solin

Unregistered / Unconfirmed
GUEST, unregistred user!
情况是这样的,需要编写一个过程(例如为socketlink(content:string)),这个过程用来将参数CONTENT传送到服务器,并且所有的连接、发送、取得服务器返回值等命令都需要完全封装在这个过程里,即不能使用CLIENTSOCKET的ONCONNECT事件来判断是否与服务器连接上,小弟试了很多方法都不理想,请帮帮忙吧,我都被堵在这里两天了。
 
那你把控件放在过程里动态创建,还要用阻塞模式。。。。。[:(]
 
我是过了,因为发出连接命令后并不能马上连接成功,在过程里不能准确的判断连接成功与否,我也试过延时可效果不好。
 
TClientSocket.Connected
 
TClientSocket.Connected我也试过,如果用循环来判断的话如果链一直连不上不就成了死循环,另外这个连接是一个短连接--当连接成功后5秒钟服务器端就会断开连接,这也是我说的采用延时不理想的原因。
 
明天是周末UP一下,希望有答案!
 
TClientSocket怎样解决代理的问题呀。
 
采用tcp/ip的三层对话模式。
首先server向client发送连接请求,并且发送特殊符号:“#¥”
如果client收到,建立一个连接,同时向服务器发送成功连接信号:“¥”

接下来在server的socket的read里面设置所有。
那么循环可以建立在read里面,而不是connect里面。
 
to hackering
不懂兄弟的意思,能否说详细点。
 
我是这样用的:

begin
try ClientSocket.Active:=True;
except
//连接不成功
end;
end;


如果用循环:
var
TimeOut:integer;
begin
TimeOut:=60;
ClientSocket.Open;
repeat
application.ProcessMessages;
sleep(100);
TimeOut:=TimeOut-1;
until (ClientSocket.Active)or(TimeOut<1);
end;
 
问一下,为什么D7的组件面板里没有TClientSocket和TServerSocket,怎么添加?谢谢
 
如果连接不上.
你要处理 onerror 事件呀!你不处理怎么知道连不上![:(!]
 
你的需求应该使用DELPHI7+INDY9来解决,因为你的需要是:
请求连接->发送请求->返回数据(处理数据)->断开
所以应该使用TCP阻塞模式来做,INDY9就是最好的TCP阻塞模式控件
DELPHI7下的DEMOS/INDY/SendReceiveRecords列子完全符合你的需要
 
后退
顶部