用VB編寫網路尋呼機 2

2021-08-28 15:48:46 字數 3499 閱讀 1978

二、在伺服器端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漏洞。作為一名...