日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]網(wǎng)絡(luò)在計(jì)算機(jī)世界里,越來(lái)越發(fā)揮著舉足輕重的作用。在WINDOWS應(yīng)用程序中,處理實(shí)時(shí)通訊最常用到的還是MICROSOFT公司提供的WINSOCK控件。許多資料都細(xì)述了WINSOCK在VB中的使用方法,

網(wǎng)絡(luò)在計(jì)算機(jī)世界里,越來(lái)越發(fā)揮著舉足輕重的作用。在WINDOWS應(yīng)用程序中,處理實(shí)時(shí)通訊最常用到的還是MICROSOFT公司提供的WINSOCK控件。許多資料都細(xì)述了WINSOCK在VB中的使用方法,就連WINDOWS本身提供的hlp文件也是針對(duì)VB而寫的。筆者因?yàn)閷?shí)際應(yīng)用的需要,琢磨出了WINSOCK控件在PB中的應(yīng)用方法。好東西不敢獨(dú)自享用,拿出來(lái)與大家共享。

  下面以一個(gè)簡(jiǎn)單程序?yàn)槔f(shuō)明WINSOCK控件在PB中的使用:

  一、在窗口中添加WINSOCK控件:

  在應(yīng)用中新開(kāi)一個(gè)窗口,在窗口畫板中點(diǎn)擊controls-->OLE菜單項(xiàng),彈出Insert object窗口,單擊Insert control標(biāo)簽,從列表框中雙擊選定Microsoft Winsock control,將winsock的圖標(biāo)貼在窗口上。

  在程序中該控件名稱定為winsock_a(甲方)和winsock_b(乙方)。

  二、設(shè)置信息輸入輸出文本框:

  在窗口中增加一個(gè)按鈕cb_1,兩個(gè)單行文本框sle_1,sle_2,分別用于輸入要發(fā)送的字符串和接受對(duì)方發(fā)送的字符串。

  三、設(shè)置通訊協(xié)議:

  WINSOCK控件允許用戶以UDP和TCP兩種協(xié)議中任選一種進(jìn)行通訊。

  1.UDP協(xié)議設(shè)置:UDP協(xié)議是一種無(wú)連接的通訊協(xié)議,在通訊之前,需要綁定remotehost和remoteport屬性,如果需要雙向通訊,還要設(shè)置localport屬性。

  在甲方(本機(jī)地址為:134.1.1.1)窗口的Open事件中加入如下語(yǔ)句:


winsock_a.object.protocol=1


//winsock通訊協(xié)議設(shè)為UDP協(xié)議

winsock_a.object.remotehost="134.1.1.2"

//對(duì)方的ip地址

winsock_a.object.remoteport=6000

//對(duì)方的winsock通訊端口號(hào)

winsock_a.object.localport=6001

//本機(jī)的winsock通訊端口號(hào)

winsock_a.object.bind

//綁定通訊協(xié)議

  在乙方(本機(jī)地址為:134.1.1.2)窗口的Open事件中加入如下語(yǔ)句:


winsock_b.object.protocol=1


//winsock通訊協(xié)議設(shè)為UDP協(xié)議

winsock_b.object.remotehost="134.1.1.1"

//對(duì)方的ip地址

winsock_b.object.remoteport=6001

//對(duì)方的winsock通訊端口號(hào)

winsock_b.object.localport=6000

//本機(jī)的winsock通訊端口號(hào)

winsock_b.object.bin

//綁定通訊協(xié)議

  2.TCP協(xié)議設(shè)置:TCP協(xié)議在通訊前需要進(jìn)行連接。

  在甲方(作為服務(wù)器端)窗口的Open事件中加入如下語(yǔ)句:


winsock_a.object.protocol=0


//winsock通訊協(xié)議設(shè)為TCP協(xié)議

winsock_a.object.localport=6001

//本機(jī)的winsock通訊端口號(hào)

winsock_a.listen()

//啟動(dòng)監(jiān)聽(tīng)

  在甲方winsock_a控件的Connectionrequest事件中加入如下語(yǔ)句:


//接受到對(duì)方的連接請(qǐng)求后


if winsock_a.object.state< >0 then

winsock_a.close()

end if

winsock_a.accept(requestID)

//建立直接連接

//requestID是Connectionrequest事件自己的參數(shù)

  在乙方(作為客戶端)窗口的Open事件中加入如下語(yǔ)句:


winsock_b.object.protocol=0


//winsock通訊協(xié)議設(shè)為TCP協(xié)議

winsock_b.object.remotehost="134.1.1.2"

//對(duì)方的ip地址

winsock_b.object.remoteport=6000

//對(duì)方的winsock通訊端口號(hào)

winsock_b.connect() //發(fā)出連接請(qǐng)求

  3.無(wú)論采用哪種協(xié)議,都要在窗口的Close事件中加入如下語(yǔ)句:


if winsock_a/*或winsock_b*/.object.state< >0 then


winsock_a.close()

end if

  否則可能第二次使用時(shí)發(fā)生異常問(wèn)題

  四、開(kāi)始通訊

  在按鈕cb_1(caption屬性設(shè)為‘發(fā)送’)的click事件中加入如下語(yǔ)句:


winsock_a/*或winsock_b*/.object.send (sle_1.text)

  在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下語(yǔ)句:


//接受到對(duì)方數(shù)據(jù)后


string datastr1

winsock_a/*或winsock_b*/.object.getdata (def datastr1)

sle_2.text=datastr1 //將數(shù)據(jù)字符串顯示在文本框中

  以上程序?qū)嶋H上體現(xiàn)了聊天器的底層工作原理,稍加修改擴(kuò)充就可以做成一個(gè)很好的聊天軟件。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉