用VFP實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)通信

字號(hào):

提起“網(wǎng)絡(luò)聊天”,大家一定不會(huì)感到陌生,其實(shí)現(xiàn)一般都是依靠Winsock控件來(lái)實(shí)現(xiàn)的,而且介紹用此控件進(jìn)行通訊的程序資料也很多,但縱觀這些資料,基本上都是介紹在VB、VC、Delphi等編程語(yǔ)言實(shí)現(xiàn)的,而用Winsock控件在VFP中進(jìn)行編程的資料卻非常少(幾乎找不到),尤其是利用此控件在VFP中進(jìn)行非文本文件的傳輸,更是一大難題:VFP中沒(méi)有二進(jìn)制類型的變量定義。筆者經(jīng)過(guò)長(zhǎng)時(shí)間的摸索,掌握了一些有關(guān)這方面的編程經(jīng)驗(yàn),現(xiàn)加以總結(jié),以便和廣大的VFP愛好者共同探討:
    一、編程基礎(chǔ)
    因?yàn)橛嘘P(guān)Winsock控件的資料在很多媒體上都有相關(guān)介紹,因此為了節(jié)省篇幅,我就不再作具體介紹,請(qǐng)大家查找一下有關(guān)資料即可,這里我只簡(jiǎn)單說(shuō)一下要用到的一些設(shè)置。為了保證通訊的可靠性,在下面的程序中使用的是TCP/IP協(xié)議,并且在客戶端和服務(wù)端均采用預(yù)設(shè)端口1001(大家在實(shí)踐時(shí)可以自行更改)。
    二、界面設(shè)計(jì)
    1.客戶端
    客戶端
    在上面的界面中共有7個(gè)對(duì)象,屬性Name=TcpClient,RemoteHostport=1001,其余屬性可根據(jù)需要自行設(shè)置,其余對(duì)象的設(shè)置也可自行設(shè)置。
    2.服務(wù)端
    服務(wù)器端
    在上面的界面中共有5個(gè)對(duì)象,屬性Name=TcpServer,LocalHostport=1001,此屬性務(wù)必和客戶端的遠(yuǎn)程主機(jī)端口一致,其余屬性可根據(jù)需要自行設(shè)置,其余對(duì)象的設(shè)置也可自行設(shè)置。
    三、實(shí)現(xiàn)代碼
    1.客戶端
    ■表單的 Init 事件:
    public strData
    strData = ""
    thisform.tcpClient.RemoteHost = "192.41.242.18"
    thisform.tcpClient.RemotePort = 1001
    ■“連接”按鈕.Click 事件
    thisform.tcpClient.object.Connect("192.41.242.18",1001)
    this.Enabled = .f.
    ■TcpClient.DataArrive 事件
    *** ActiveX Control Event ***
    LPARAMETERS bytestotal
    thisform.tcpClient.Object.GetData(@strData)
    thisform.txtOutput1.Value = strData
    ■TxtSend1.InteractiveChange 事件
    thisform.tcpClient.Object.SendData(this.Value)