在POWERBUILDER中使用WINSOCK控制元件的方法
隨著資源共享和實時通訊的需要,很多計算機應用程式早已甩開單兵作戰的模式,轉入聯合行動。
網路在計算機世界裡,越來越發揮著舉足輕重的作用。在WINDOWS應用程式中,處理實時通訊最常用到的還是MICROSOFT公司提供的WINSOCK控制元件。許多資料都細述了WINSOCK在VB中的使用方法,就連WINDOWS本身提供的hlp檔案也是針對VB而寫的。筆者因為實際應用的需要,琢磨出了WINSOCK控制元件在PB中的應用方法。好東西不敢獨自享用,拿出來與大家共享。
下面以一個簡單程式為例,說明WINSOCK控制元件在PB中的使用:
一、在視窗中新增WINSOCK控制元件:
在應用中新開一個視窗,在視窗畫板中點選controls-->OLE選單項,彈出Insert object視窗,單擊Insert control標籤,從列表框中雙擊選定Microsoft Winsock control,將winsock的圖示貼在視窗上。
在程式中該控制元件名稱定為winsock_a(甲方)和winsock_b(乙方)。
二、設定資訊輸入輸出文字框:
在視窗中增加一個按鈕cb_1,兩個單行文字框sle_1,sle_2,分別用於輸入要傳送的字串和接受對方傳送的字串。
三、設定通訊協議:
WINSOCK控制元件允許使用者以UDP和TCP兩種協議中任選一種進行通訊。
1.UDP協議設定:UDP協議是一種無連線的通訊協議,在通訊之前,需要繫結remotehost和remoteport屬性,如果需要雙向通訊,還要設定localport屬性。
在甲方(本機地址為:134.1.1.1)視窗的Open事件中加入如下語句:
在乙方(本機地址為:134.1.1.2)視窗的Open事件中加入如下語句:
2.TCP協議設定:TCP協議在通訊前需要進行連線。
在甲方(作為伺服器端)視窗的Open事件中加入如下語句:
在甲方winsock_a控制元件的Connectionrequest事件中加入如下語句:
在乙方(作為客戶端)視窗的Open事件中加入如下語句:
3.無論採用哪種協議,都要在視窗的Close事件中加入如下語句:
否則可能第二次使用時發生異常問題
四、開始通訊
在按鈕cb_1(caption屬性設為‘傳送’)的click事件中加入如下語句:
在winsock_a/*或winsock_b*/控制元件的dataarrival事件中加入如下語句:
以上程式實際上體現了聊天器的底層工作原理,稍加修改擴充就可以做成一個很好的聊天軟體。
網路在計算機世界裡,越來越發揮著舉足輕重的作用。在WINDOWS應用程式中,處理實時通訊最常用到的還是MICROSOFT公司提供的WINSOCK控制元件。許多資料都細述了WINSOCK在VB中的使用方法,就連WINDOWS本身提供的hlp檔案也是針對VB而寫的。筆者因為實際應用的需要,琢磨出了WINSOCK控制元件在PB中的應用方法。好東西不敢獨自享用,拿出來與大家共享。
下面以一個簡單程式為例,說明WINSOCK控制元件在PB中的使用:
一、在視窗中新增WINSOCK控制元件:
在應用中新開一個視窗,在視窗畫板中點選controls-->OLE選單項,彈出Insert object視窗,單擊Insert control標籤,從列表框中雙擊選定Microsoft Winsock control,將winsock的圖示貼在視窗上。
在程式中該控制元件名稱定為winsock_a(甲方)和winsock_b(乙方)。
二、設定資訊輸入輸出文字框:
在視窗中增加一個按鈕cb_1,兩個單行文字框sle_1,sle_2,分別用於輸入要傳送的字串和接受對方傳送的字串。
三、設定通訊協議:
WINSOCK控制元件允許使用者以UDP和TCP兩種協議中任選一種進行通訊。
1.UDP協議設定:UDP協議是一種無連線的通訊協議,在通訊之前,需要繫結remotehost和remoteport屬性,如果需要雙向通訊,還要設定localport屬性。
在甲方(本機地址為:134.1.1.1)視窗的Open事件中加入如下語句:
winsock_a.object.protocol=1 //winsock通訊協議設為UDP協議 winsock_a.object.remotehost="134.1.1.2" //對方的ip地址 winsock_a.object.remoteport=6000 //對方的winsock通訊埠號 winsock_a.object.localport=6001 //本機的winsock通訊埠號 winsock_a.object.bind //繫結通訊協議 |
在乙方(本機地址為:134.1.1.2)視窗的Open事件中加入如下語句:
winsock_b.object.protocol=1 //winsock通訊協議設為UDP協議 winsock_b.object.remotehost="134.1.1.1" //對方的ip地址 winsock_b.object.remoteport=6001 //對方的winsock通訊埠號 winsock_b.object.localport=6000 //本機的winsock通訊埠號 winsock_b.object.bin //繫結通訊協議 |
2.TCP協議設定:TCP協議在通訊前需要進行連線。
在甲方(作為伺服器端)視窗的Open事件中加入如下語句:
winsock_a.object.protocol=0 //winsock通訊協議設為TCP協議 winsock_a.object.localport=6001 //本機的winsock通訊埠號 winsock_a.listen() //啟動監聽 |
在甲方winsock_a控制元件的Connectionrequest事件中加入如下語句:
//接受到對方的連線請求後 if winsock_a.object.state< >0 then winsock_a.close() end if winsock_a.accept(requestID) //建立直接連線 //requestID是Connectionrequest事件自己的引數 |
在乙方(作為客戶端)視窗的Open事件中加入如下語句:
winsock_b.object.protocol=0 //winsock通訊協議設為TCP協議 winsock_b.object.remotehost="134.1.1.2" //對方的ip地址 winsock_b.object.remoteport=6000 //對方的winsock通訊埠號 winsock_b.connect() //發出連線請求 |
3.無論採用哪種協議,都要在視窗的Close事件中加入如下語句:
if winsock_a/*或winsock_b*/.object.state< >0 then winsock_a.close() end if |
否則可能第二次使用時發生異常問題
四、開始通訊
在按鈕cb_1(caption屬性設為‘傳送’)的click事件中加入如下語句:
winsock_a/*或winsock_b*/.object.send (sle_1.text) |
在winsock_a/*或winsock_b*/控制元件的dataarrival事件中加入如下語句:
//接受到對方資料後 string datastr1 winsock_a/*或winsock_b*/.object.getdata (def datastr1) sle_2.text=datastr1 //將資料字串顯示在文字框中 |
以上程式實際上體現了聊天器的底層工作原理,稍加修改擴充就可以做成一個很好的聊天軟體。
相關文章
- 在PowerBuilder中動態呼叫函式UI函式
- 在InstallShield中引用WINSOCK 的示例 (轉)
- 在WPF中使用WinForm控制元件方法ORM控制元件
- 論UI中控制元件的使用方法UI控制元件
- 在Delphi中編寫控制元件的基本方法 (轉)控制元件
- PowerBuilder11.5破解方法UI
- PowerBuilder11.5破解方法.UI
- 在Delphi中編寫控制元件的基本方法(1) (轉)控制元件
- toString 方法在陣列中的使用陣列
- 在BCB中輕鬆使用ActiveX控制元件 (轉)控制元件
- 【PB】powerbuilder中xml的應用一例UIXML
- Hanlp在ubuntu中的使用方法介紹HanLPUbuntu
- 在VB.Net中建立使用控制元件陣列 (轉)控制元件陣列
- WPF中Popup控制元件的使用控制元件
- Win10系統怎麼重置winsock win10系統重置winsock的方法Win10
- 在Java中呼叫Groovy方法的又一種方法:使用介面Java
- static方法在繼承中如何使用?繼承
- WPF中Ribbon控制元件的使用控制元件
- 用VB5 Winsock控制元件建立TCP/IP通訊程式控制元件TCP
- 在Flex控制元件中使用XMLListCollectionFlex控制元件XML
- powerbuilder 11的又一怪事UI
- Billboards 技術在Unity 中的幾種使用方法Unity
- MFC中ListControl控制元件的使用控制元件
- WPF中3D控制元件的使用3D控制元件
- 在ASP.NET 中,Javascript 分別獲取Html伺服器控制元件和Web伺服器控制元件的方法ASP.NETJavaScriptHTML伺服器控制元件Web
- 在Delphi中使用IP控制元件 (轉)控制元件
- 在delphi中使用flash控制元件 (轉)控制元件
- LR中winsock相關函式彙總函式
- 使用PowerBuilder同時訪問多個資料庫UI資料庫
- PHP 中`Closure`和`Callable`的區別以及在 Redis 訂閱方法中的使用PHPRedis
- 在 Linux 中無人看守批次建立使用者的方法Linux
- 使用WebBrowser控制元件獲取網頁原始碼的方法Web控制元件網頁原始碼
- WinSock基礎
- iota 在 Go 中的使用Go
- REST 在 Java 中的使用RESTJava
- 在執行時使用滑鼠移動控制元件和改變控制元件的大小 (轉)控制元件
- 在JavaScript中借用方法JavaScript
- 不用重新安裝PowerBuilder8.0也可以使用 (轉)UI