我在pb8中,在視窗中插入一個OLE控制元件winsock。。然后我設定好對應的協議和埠,并且bind。
現在我想向目標埠發送一串資料,請問發送的函式怎么寫,我用send或者write都是運行的時候說沒有定義。或者有人有例子嗎,麻煩發個可以用的給我,不要在網上復制過來。。。。謝謝!
uj5u.com熱心網友回復:
你需要創建物件ws = create WinSock
然后呼叫
choose case iEvent
case ws.FD_CONNECT
if iRet = 1 then
lb_1.AddItem(sMsg + String(Today(), "yyyy/mm/dd") + String(Now(), "hh:mm:ss fff"))
else
lb_1.AddItem(sMsg)
end if
case ws.FD_READ
if iRet = 1 then
lb_1.AddItem(sMsg)
wf_save_record(sMsg)
else
lb_1.AddItem(sMsg)
end if
case ws.FD_WRITE
if iRet = 1 then
lb_1.AddItem(sMsg)
else
lb_1.AddItem(sMsg)
end if
case ws.FD_CLOSE
lb_1.AddItem(sMsg + String(Today(), "yyyy/mm/dd") + String(Now(), "hh:mm:ss fff"))
end choose
uj5u.com熱心網友回復:
是不是屬性沒調啊uj5u.com熱心網友回復:
下面以一個簡單程式為例,說明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 //將資料字串顯示在文本框中
uj5u.com熱心網友回復:
我是根據這個來做的,但是發送的時候就是不可以。如果那位做的可以實作的,希望可以發給我看看,謝謝uj5u.com熱心網友回復:
是否插入的不是winsock控制元件另外可能與pb版本有關
uj5u.com熱心網友回復:
有會的人做個可以給我看下嘛。。很快的。。。無限感激轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/73460.html
標籤:API 調用
上一篇:請教關于PB保存圖片的問題
