zoukankan      html  css  js  c++  java
  • TCPserver通信方法

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

    Tcpserver组件属性
     LocalHostAddr  获取本地机IP;
     localport      获取本地端口;
     LocalHostName  本地计算机名称;
     BlockMode属性,可以设定TTCPServer为bmBlockingmNonBlockingmThreadBlocking这三种通讯模式;   
        
       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;

  • 相关阅读:
    16个能帮你找到网页设计灵感的网站
    Charts 图表插件
    jquery获取text,areatext,radio,checkbox,select值(转)
    原型开发、模型构建和设计反馈在线工具
    AutoComplete 自动完成插件(2)
    以蓝色为主题的网站设计灵感
    25个必须要学会的jQuery幻灯片插件教程(中)
    25个必须要学会的jQuery幻灯片插件教程(上)
    极具创意和趣味性的网站404错误页面设计集合
    用CSS制作横向菜单
  • 原文地址:https://www.cnblogs.com/manhuidhu/p/7283611.html
Copyright © 2011-2022 走看看