二、在伺服器端server工程中也建立乙個窗體,載入winsock控制項,稱為tcpserver,協議選擇tcp,設定其index值為0,並在工程中新增模組。
內容如下:
private type activeuser
clientip as string 』記錄客戶的ip位址
clientport as integer 』記錄當前會話的埠
clientid as long 』記錄客戶的id號碼
clientconnected as boolean
』客戶連線狀態,true表示已連線,false表示沒有連線
end type
dim curuser() as activeuser
dim tcpindex as integer 』跟蹤當前建立連線數
在form_load事件中加入如下**:
private sub form_load()
tcpserver(0).protocol = scktcpprotocol
tcpserver(0).localport = 1001
』將 localport 屬性設定為乙個整數。
tcpserver(0).listen 』然後呼叫 listen 方法。
tcpindex = 1
end sub
準備應答客戶端程式的請求連線,使用connectionrequest事件來應答戶端程式的請求,**如下:
private sub tcpserver_connectionrequest
(index as integer, byval requestid as long)
dim i as integer
on error goto errhandle
for i = 1 to tcpindex 』選擇乙個空閒埠
if curuser(i).clientconnected =
false and i < > tcpindex then
load tcpserver(i)
tcpserver(i).localport = curuser(i).clientport - 1
tcpserver(i).accept requestid
exit for
elseif curuser(i).clientconnected = false then
load tcpserver(i)
tcpserver(i).localport = port
if tcpserver(i).state < > sckclosed then
tcpserver(i).close
end if
tcpserver(i).accept requestid
exit for
end if
next
doevents
』測試連線是否成功
if tcpserver(i).state = sckconnected then
if i = tcpindex then
』已經沒有可用埠,記錄客戶的ip位址和埠號
tcpindex = tcpindex + 1
port = port + 1
redim preserve curuser(tcpindex)
curuser(i).clientip = tcpserver(i).remotehostip
curuser(i).clientconnected = true
curuser(i).clientport = port
curuser(tcpindex).clientconnected = false
else
curuser(i).clientip = tcpserver(i).remotehostip
curuser(i).clientport = port
curuser(i).clientconnected = true
end if
end if
exit sub
errhandle:
resume next
』檢查控制項的 state 屬性,如未關閉,在接受新的連線之前關閉此連線。
if tcpserver(0).state <> sckclosed then
tcpserver(0).close
tcpserver(0).accept requestid
』接受具有 requestid 引數的,連線。
end sub
private sub tcpserver_dataarrival(index as integer,
byval bytestotal as long)
dim i as integer
dim s as string
dim requid as long 』主叫方id號碼
dim searchid as long 』被叫方id號碼
on error goto errhandle
tcpserver(index).getdata s, vbstring
』接收資料並存入s
if mid(s, i, 1) = "@" then
』分離s中的主叫方和被叫方id號碼
searhid = left(s, i - 1) 』把號存入mkey
requid = right(s, len(s) - i) 』id存入requid
end if
』如果是請求尋呼某一id號碼,則檢索當前此id使用者是否登入(即curuser陣列中是否存在此使用者),然後傳送資訊,通知此使用者響應呼叫並顯示主叫使用者id號碼。
for i = 1 to tcpindex
if requid = curuser(i).clientid and curuser(i)
.clientconnected = true then
tcpserver(i).senddata (searhid)
end if
next
exit sub
errhandle:
if err.number = sckbadstate then 』連線不正確
curuser(i).clientconnected = false
curuser(i).clientip = ""
unload tcpserver(i)
resume next
end if
end sub
本程式僅提供了用visual basic 編寫網路尋呼的思路和主要部分的實現過程,至於主叫方和被叫方建立連線後的通訊並未擴充套件,讀者若有興趣,可在這方面加入具體的實現**,就可以給本程式增加更多的功能,如實時聊天,語音對話等。如果在伺服器程式檢索到被叫方時,分別通知兩者客戶端程式,使主叫方和被叫方直接利用ip位址進行連線,則兩者的連線速度將會有大幅度的提高。
尋呼機制(Paging)
當需要向處於ecm idle態 ue在mme中的狀態 的ue傳送下行資料時,mme會向ue所註冊的所有ta tracking area 內的所有enodeb傳送一條paging訊息 mme發往enodeb 然後enodeb會通過空口傳送一條paging訊息 enodeb發往ue 以尋呼ue。處於rr...
如何更改GridView的尋呼機樣式
讓我們嘗試更改gridview的預設尋呼機樣式。預設尋呼機樣式為1 2 3 4。首先讓我們做它,下乙個最後乙個。為此,首先編寫乙個簡單的css,例如 現在讓我們看看如何編寫gridview來更改尋呼機樣式,標記或網格檢視將如下所示 allowpaging true onpageindexchangi...
網路安全專家寧願用尋呼機也不用智慧型手機
中情局旗下非贏利風險投資公司in q tel 的首席資訊保安官dan geer出席了上週舉行的black hat usa安全會議,發表了主題演講 youtube 談論了讓網際網路變得更安全和定義數字時代隱私的計畫,他的計畫包含強制性安全漏洞披露,建議美國 購買和披露所有能找到的0day漏洞。作為一名...