TCPserver通信方法

http://pmaboy.blog.sohu.com/84693130.html

 

Tcpserver组件属性
 LocalHostAddr  获取本地机IP;
 localport      获取本地端口;
 LocalHostName  本地计算机名称;
 BlockMode属性,可以设定TTCPServer为bmBlocking\bmNonBlocking\bmThreadBlocking这三种通讯模式;   
    
   bmBlocking       为阻塞模式,以同步的方式进行数据传输,   
   bmNonBlocking    非阻塞模式,以异步的方式进行数据传输,   
   bmThreadBlocking 线程异步模式,创建一个子线程与TcpClient进行通讯,在线程中以同步的方式传输数    据;

   如果是bmBlocking模式,可以OnAccept事件中编写代码     
   procedure   TForm1.TcpServer1Accept(Sender:   TObject;  ClientSocket:   TCustomIpClient);   
         //接收tcpclient的数据   
         ClientSocket.ReceiveFrom()   
          ClientSocket.ReceiveBuf()   
    
        //向tcpclient发送数据   
        ClientSocket.SendBuf()   
        ClientSocket.SendTo()   
    
 如果是bmThreadBlocking模式,可以OnGetThread事件中编写代码     
   procedure   TForm1.TcpServer1GetThread(Sender: TObject; var ClientSocketThread: TClientSocketThread);   
    begin   
         ClientSocketThread.ClientSocket.     
        //接收tcpclient的数据   
         ClientSocketThread.ClientSocket.ReceiveFrom()   
         ClientSocketThread.ClientSocket.ReceiveBuf()   
    
         //向tcpclient发送数据   
          ClientSocketThread.ClientSocket.SendBuf()   
          ClientSocketThread.ClientSocket.SendTo()   
 Listening    返回布尔值,是否正在侦听
 LookupHostName  指定参数IP可以获取其主机名;

D7-->TCPserver通信方法
1、指定其Localport属性为大于1024值的整型值,目的是指定TCPsever1的监听端口;
2、设定其通信方式:Blockmode;
3、打开TCPsever1监听客户端连接请求,TCPsever1.active:=true;
4、在TCPserver1.OnAccept事件中写读写客户端代码;Receivebuf(char数组,长度),Sendbuf(char数组,长度)读写客户端连接;

var buff:array[0..255]of char;
      tmpbuf:string;
  begin
    Clientsocket.OnReceive:=onbuff;//自定义Onbuff显示接收到数据
    while ClientSocket.Connected  do
    begin
        if ClientSocket.WaitForData(50)then//保证无阻塞的读数据;
        ClientSocket.receivebuf(buff[0],sizeof(buff)); //必须有这外判定不然发不出数据

        if outbuf<>'' then   //outbuf为全局变量用于接收Form中的Memo值;
        begin
        tmpbuf:=outbuf;
        outbuf:='';
        ClientSocket.SendBuf(pchar(tmpbuf)^,length(tmpbuf));
    end;

//将接收到的数据显示到Memo
procedure Tform1.onbuff(Sender: TObject; Buf: pchar; var DataLen: Integer);
var buff:pchar;
    st:string;
    I:integer;
begin
  st:='';
  buff:=buf;
  for i:=0  to datalen do
  begin
  st:=st+ buff^;
  inc(buff);
  end;
  self.memo1.Lines.Add(st) ;
end;

转载于:https://www.cnblogs.com/manhuidhu/p/7283611.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值