TcpServer的procedure TForm_main.TcpServer1GetThread(Sender: TObject;
var ClientSocketThread: TClientSocketThread);事件應該怎么用呢?
查了半天,不會用,網上的都是多了一個引數的,這里才有兩個引數,根本找不到對應例子啊
uj5u.com熱心網友回復:
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.uj5u.com/houduan/134430.html
標籤:網絡通信/分布式開發
