天堂国产午夜亚洲专区-少妇人妻综合久久蜜臀-国产成人户外露出视频在线-国产91传媒一区二区三区

QQ聊天程序的網(wǎng)絡(luò)通信原理及編程

發(fā)布時(shí)間:2016-08-16 10:02

  本文關(guān)鍵詞:QQ聊天程序的網(wǎng)絡(luò)通信原理及編程,由筆耕文化傳播整理發(fā)布。


QQ聊天程序的網(wǎng)絡(luò)通信原理及編程的論文,對(duì)網(wǎng)絡(luò)編程學(xué)習(xí)很有幫助

●●●-●●-●●-t----●---●●-●__--●●-●---●-●●---●●-●-●●-●●●-----●_●川●-●●-

實(shí)用第一/智慧密集

。。...........。............。。。..。...........。..。.............。......。。j?代表什么含義,每條數(shù)據(jù)最前面有代表不同含義的數(shù)據(jù)含義標(biāo),

DimtmpstrAsString

記字符串,每條數(shù)據(jù)后有相同的數(shù)據(jù)結(jié)束標(biāo)記符,每條數(shù)據(jù)中各子數(shù)據(jù)間有子數(shù)據(jù)分割標(biāo)記符。各數(shù)據(jù)含義標(biāo)記字符串如下:

Public

ConstOnlineFriendlPlD=’FriendlPID’

7表示本數(shù)據(jù)中包含在線好友的IP地址和lD

Public

ConstLogin=。UserLogin’

’表示本數(shù)據(jù)中包含登錄用戶的用戶ID和密碼

PublicConstNotUser=’IsNotUser’

7本數(shù)據(jù)含義為“不是合法用戶”

PublicConstIsUser=+ThislsUser’

7本數(shù)據(jù)含義為“是合法用戶”

為了識(shí)別數(shù)據(jù)含義方便,含義標(biāo)記字符串長(zhǎng)度一致,我這里采用的長(zhǎng)度為10。

PublicConstHeadLength=lO

關(guān)于分割標(biāo)記符和結(jié)束標(biāo)記符,我采用數(shù)值1和2轉(zhuǎn)字符的方法,因?yàn)樗鼈冝D(zhuǎn)成的字符不是普通字符,不會(huì)和傳送的數(shù)據(jù)如用戶ID、密碼、IP地址等字符串?dāng)?shù)據(jù)混淆。

具體發(fā)送數(shù)據(jù)通過SendData方法進(jìn)行,發(fā)送登錄用戶名和密碼的語句如下,數(shù)據(jù)的格式為:數(shù)據(jù)含義標(biāo)記字符串+用戶名+分割標(biāo)記符+密碼+結(jié)束標(biāo)記符。

PrivateSub

WinsockClient_Connect《}

WinsockClient.SendDataLogin&TextUsername.Text&Chr

《1)&TextPassword.Text&Chr(2)EndSub

(5)接收收據(jù)

當(dāng)有數(shù)據(jù)到達(dá)時(shí),程序會(huì)收到消息觸發(fā)DataArrival事件,所以不論服務(wù)端還是客戶端程序接收數(shù)據(jù)的工作在DataArrival事件方法中完成。具體接收數(shù)據(jù)使用GetData方法進(jìn)行,為了防止客戶端發(fā)送來的數(shù)據(jù)太多,服務(wù)端來不及處理,我定義了一個(gè)字符串?dāng)?shù)組BufferRecv,該數(shù)組與WinsockServer控件數(shù)組對(duì)應(yīng),WinsockServer(1ndex)控件收到的數(shù)據(jù)添加在BufferRecv(Index)中,然后通過結(jié)束標(biāo)記符在BufferRecv《Index)中取出一條條數(shù)據(jù)進(jìn)行分析。如果是客戶登錄,則獲取用戶名和密碼,然后通過自定義函數(shù)Lookfor在數(shù)據(jù)庫(kù)中驗(yàn)證。如果驗(yàn)證為合法用戶,則發(fā)送“是合法用戶”數(shù)據(jù)標(biāo)記,然后將用戶lD和用戶機(jī)器的lP等信息置于一個(gè)在線用戶信息的結(jié)構(gòu)數(shù)組中備用。然后通過自定義函數(shù)GetFriend在數(shù)據(jù)庫(kù)中獲取該用戶的所有好友ID及好友人數(shù),并根據(jù)在線用戶信息數(shù)組逐一判斷各個(gè)好友是否在線,如果在線,則將在線好友的ID及IP地址發(fā)送給剛登錄的客戶,同時(shí)也將剛登錄客戶的ID及IP地址發(fā)送給在線好友,以便他們相互之間能夠通信。如果驗(yàn)證為非法用戶,,則發(fā)送“不是合法用戶”數(shù)據(jù)標(biāo)記,并將與該客戶通信用的Winsock控件卸載。

PrivateSubWinsockServer_DataArrival(IndexAsInteger,ByValbytesTotalAs

Long)

萬方數(shù)據(jù)

DimEndFlagLocAsInteger7結(jié)束標(biāo)記所處位置變量

IfIndex=0ThenExitSub

WinsockServer(Index).GetDatatmpstr,,bytesTotal

’接收收據(jù)存入tmpstr中

BufferRecv(Index)=BufferRecv(Index)&tmpstr

7將收到的數(shù)據(jù)添加在BufferRecv(Index)中

EndFlagLoc=InStr(BufferRecv(Index),Chr{2))

’在BufferRecv{Index)中尋找第一個(gè)結(jié)束標(biāo)記符的位置WhileEndFlagLoc>0

7在BufferRecv(Index)中取第一個(gè)結(jié)束標(biāo)記符左邊的數(shù)據(jù),’即第一條數(shù)據(jù).

strMsg=LeftS《BufferRecv(Index),EndFlagLoc一1)

’獲取本條數(shù)據(jù)前面的數(shù)據(jù)含義標(biāo)記字符串以分析本條數(shù)據(jù)的7含義.

SelectCaseLeftSfstrMsg,HeadLength)

CaseLogin’如果是登錄數(shù)據(jù)Dim

tmpPassWordAsString

DimtmpUserlDAsString

7通過Mid方法取得數(shù)據(jù)含義標(biāo)記字符串之后分割標(biāo)’記符之前的數(shù)據(jù).即登錄用戶名.

tmpUserlD=Mid《strMsg,HeadLength4-1,InStr{strMsg.Chr(1))一1一HeadLength)

7通過Mid方法取得分割標(biāo)記符之后的數(shù)據(jù),即登錄密碼.tmpPassWord=Mid(strMsg,InStr(strMsg,Chr(1))+1)’通過自定義函數(shù)Lookfor在數(shù)據(jù)庫(kù)中查詢?cè)撚脩裘艽a是否。存在,如存在則發(fā)送含義為“是合法用戶”的數(shù)據(jù),Lookfor函’數(shù)的具體實(shí)現(xiàn)見源程序.

IfLookfor(tmpUserlD,tmpPassWord)Then

WinsockServer{Index}.SendDataIsUser&Chr(2)

DoEvents

’將客戶端的lP地址和用戶lD等信息置于一個(gè)有關(guān)在線用戶’信息的結(jié)構(gòu)數(shù)組中備用,并設(shè)置登錄標(biāo)志變量bLogined為

’True.

OntineUserlnfo(Index).IPAddr=WinsockServer《Index)

.RemoteHostlP

OnlineUserlnfofIndex).UserlD=tmpUserlD

OnlineUserlnfo(Index).bLogined=True

DimAtlFriendlDAsString

DimFriendlDAsStringDimFriendCountAs

nteger

DimTOIdFriendCOuntAsnteger

’然后通過自定義函數(shù)GetFriend在數(shù)據(jù)庫(kù)中獲取該用戶的所7有好友的ID及好友人數(shù).分別放在參數(shù)AIIFriendlD和

FriendCount中.

If

GetFriend(tmpUserlD.AlIFriendlD,FriendCount}Then

’然后根據(jù)在線用戶信息數(shù)組用InStr函數(shù)逐一判斷在線用戶’是否是該用戶的好友.

Fori=1ToMaxOnlineUser

If

OnlineUserlnfo《i).bLoginedThen

IfInStr《AIIFriendlD,On№eUserInfoli).UserlD)>0Then

’如果是,則將在線好友的ID及IP地址發(fā)送給剛登錄的客


  本文關(guān)鍵詞:QQ聊天程序的網(wǎng)絡(luò)通信原理及編程,由筆耕文化傳播整理發(fā)布。



本文編號(hào):95196

資料下載
論文發(fā)表

本文鏈接:http://sikaile.net/kejilunwen/wltx/95196.html


Copyright(c)文論論文網(wǎng)All Rights Reserved | 網(wǎng)站地圖 |

版權(quán)申明:資料由用戶cc42b***提供,本站僅收錄摘要或目錄,作者需要?jiǎng)h除請(qǐng)E-mail郵箱bigeng88@qq.com
国产成人av在线免播放观看av| 日韩高清毛片免费观看| 日本 一区二区 在线| 少妇福利视频一区二区| 亚洲国产日韩欧美三级| 亚洲国产成人av毛片国产| 色哟哟哟在线观看视频| 国产亚洲系列91精品| 亚洲一区二区精品国产av| 国产熟女一区二区不卡| 欧美成人精品国产成人综合| 精品欧美国产一二三区| 亚洲高清欧美中文字幕| 亚洲国产91精品视频| 日韩国产亚洲欧美激情| 日韩人妻少妇一区二区| 午夜久久久精品国产精品| 亚洲精品欧美精品一区三区 | 亚洲女同一区二区另类| 亚洲天堂有码中文字幕视频| 日韩高清一区二区三区四区| 日本人妻精品中文字幕不卡乱码| 午夜日韩在线观看视频| 亚洲中文在线男人的天堂| 日韩一区二区三区18| 日本在线视频播放91| 色丁香之五月婷婷开心| 欧美激情一区=区三区| 欧美一区二区三区99| 老外那个很粗大做起来很爽| 精品精品国产欧美在线| 日韩欧美国产三级在线观看| 在线免费国产一区二区三区 | 亚洲视频在线观看免费中文字幕| 国产毛片av一区二区三区小说| 国产精品欧美激情在线播放| 欧美中文字幕一区在线| 亚洲国产av一二三区| 九九蜜桃视频香蕉视频| 激情中文字幕在线观看| 亚洲精选91福利在线观看|