基于tcp的socket连接【delphi版】

基于tcp的socket连接【delphi版】

ID:30796819

大小:58.00 KB

页数:5页

时间:2019-01-03

基于tcp的socket连接【delphi版】_第1页
基于tcp的socket连接【delphi版】_第2页
基于tcp的socket连接【delphi版】_第3页
基于tcp的socket连接【delphi版】_第4页
基于tcp的socket连接【delphi版】_第5页
资源描述:

《基于tcp的socket连接【delphi版】》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、•用的indy控件:idtcpsrvrl:TTdTCPServer;a)设置默认端口1begin2Seif・btn1.Enabled:二False;3idtcpsrvrl.DefaultPort:=2001;4idtcpsrvrl.Active:=True;5end;b)对客户端连接事件响应1procedureTForml.idtcpsrvrlConnect(AThread:TIdPeerThread);2var3ipStr:string;4begin5ipStr:=AThread.Connection.Socket.Binding.PeerIP;6Sh

2、owMessage(,IP地址为:’+ipStr+'的用户连接过来!’);7end;c)对客户端发送过来的字符串进彳亍显示,并通知客户端接收成功心1procedureTForml.idtcpsrvrlExecute(AThread:TIdPeerThread);2var3str:string;4begin5withAThread.Connectiondo6begin7str:=readln(J',5000);8inc(messageld);9WriteLn(,第’+inttostr(messageld)+,条数据接收成功,内容为:’+str);10end

3、;11end;二Client端Socket:TTdTCPClient;a)指定Server端ip和端口号1begin2Socket:=TTdTCPClient.Create(nil);3Socket.Host:二'127.0.0.1';4Socket.Port:=2001;5end;b)建立连接1ifnotsockct.Connectedthen2begin3try4socket.Connect(5000);5Memol.Lines.Add(,socke连接已经成功建立!’);6btnl.Caption:=,断开连接';7except8ShowMessa

4、ge('连接失败,请检查连接设置!’);9end;10end注:socket连接建立失败的两种情形:1)探测找不到目标主机:此时会等到timeout时间结束后.抛出连接异常2)探测到目标主机,但是目标主机上socket连接未开:立即抛出连接异常c)发送与接收数据1var2RequestStr,BackStr:string;3begin4ifsocket.Connectedthen5begin6RequestStr:='tttttttttttt*;7try8socket.WriteLn(RequestStr);9Memol.Lines.Add(,发送数据:

5、'+RequestStr);10BackStr:=sockct.RcadLn('',5000);//实际上timeout是不起作用的,indy木身11//的bug;此时如果server端无数据则会死等12Memol.Lines.Add(,返回数据:'+BackStr);13except14ShowMessage('发送数据失败!’);15end;16end17else18begin19Memol.Lines.Add(?连接已被断开,无法发送!’);20end;21end;2说明:1)indy的TIdTCPCIient是阻塞式的,程序会停在那里等待接收,故

6、有以下两种读取数据的方式:a)可以单独启一个线程来负责接收b)通过timer来监控是否有新数据到1proceduretimer,ontimer2vartemp:string;3begin4idtcpclient.readfromstack(false,1,false);5whileidtcpclient.InputBuffer.Size〉0dobegin6temp:二idtcpclient.ReadLn;7end;8end;2)如果能知道要取的数据包的大小,可以用readbufferCabuffer,包长度)来取得包。d)断开连接1begin234567

7、89end;trysocket.Disconnect;Memol.Lines.Add('socket连接已断开!);btnl.Caption:=,建立连接';exceptShowMessage('断开连接时出错!');end;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。