




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
-.z1.效勞器端往效勞器窗體〔命名為frmServer〕添加三個(gè)控件,分別為L(zhǎng)IST1〔存放在線好友〕,te*t1〔留言容〕和te*t2〔聊天記錄〕,程序如下:OptionE*plicitConstBusyAsBoolean=FalseConstFreeAsBoolean=TrueDimConnectState()AsBooleanDimSInde*DimUsrs(0To32)'在線人名PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)EndEndSubPrivateSubForm_Load()IfApp.PrevInstance=TrueThenMsgBo*"程序已在運(yùn)行",vbCriticalEndEndIfReDimPreserveConnectState(0)OnErrorResumeNe*tConnectState(0)=FreeListener.LocalPort=1001'端口號(hào)Listener.Listen'開場(chǎng)偵聽EndSubPrivateSubListener_ConnectionRequest(ByValrequestIDAsLong)DimSockInde*AsIntegerDimSockNumAsIntegerOnErrorResumeNe*tSockNum=UBound(ConnectState)IfSockNum>32ThenE*itSub'查找空閑的SckServerSockInde*=FindFreeSocket'如果已有的sock都忙,而且sock數(shù)不超過32個(gè),動(dòng)態(tài)添加sockIfSockInde*>SockNumThenLoadSckServer(SockInde*)ConnectState(SockInde*)=BusySckServer(SockInde*).Tag=SockInde*'承受請(qǐng)求SckServer(SockInde*).Accept(requestID)EndSubPrivateSubSckServer_DataArrival(Inde*AsInteger,ByValbytesTotalAsLong)Dimd*AsStringSInde*=Inde*SckServer(Inde*).GetDatad*,vbStringIfLen(Te*t2.Te*t)>=512ThenTe*t2.Te*t="IfRight(d*,2)="||"ThenList1.AddItemReplace(d*,"|",")Usrs(SInde*)=Replace(d*,"|",")Timer1.Enabled=TrueTe*t2.Te*t=Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞上線。"&vbCrLf&Te*t2.Te*tOpenApp.Path&"\record.t*t"ForAppendAs*1Write*1,Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞上線。"Close*1ElseTe*t1.Te*t=Left(d*,InStr(d*,"|"))&Format(Now(),"YY-MM-DDhh:mm:ss")&vbCrLf&Usrs(Inde*)&"說:"&Right(d*,Len(d*)-InStr(d*,"|"))Te*t2.Te*t=Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞對(duì)“"&Replace(d*,"|","〞說:"&vbCrLf)&vbCrLf&Te*t2.Te*tOpenApp.Path&"\record.t*t"ForAppendAs*1Write*1,Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞對(duì)“"&Replace(d*,"|","〞說:"&vbCrLf)Close*1EndIfEndSubPrivateSubSckServer_Close(Inde*AsInteger)Dimi%OnErrorResumeNe*tIfSckServer(Inde*).State<>sckClosedThenSckServer(Inde*).CloseConnectState(Inde*)=FreeTe*t2.Te*t=Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞下線。"&vbCrLf&Te*t2.Te*tOpenApp.Path&"\record.t*t"ForAppendAs*1Write*1,Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞下線。"Close*1Fori=0ToList1.ListCountIfList1.List(i)=Usrs(Inde*)ThenList1.RemoveItem(i)Usrs(Inde*)="Timer1.Enabled=TrueE*itForEndIfNe*tEndSubPublicFunctionFindFreeSocket()DimSockCount,iAsIntegerSockCount=UBound(ConnectState)Fori=0ToSockCountIfConnectState(i)=FreeThenFindFreeSocket=iE*itFunctionEndIfNe*tiReDimPreserveConnectState(0ToSockCount+1)FindFreeSocket=UBound(ConnectState)EndFunctionPrivateSubTe*t1_Change()DimAr,iOnErrorGoToL1Ar=Split(Te*t1.Te*t,"|")Fori=0ToUBound(Usrs)IfUsrs(i)=Ar(0)AndAr(0)<>"ThenE*itForNe*tSckServer(i).SendDataTe*t1.Te*tL1:EndSubPrivateSubTimer1_Timer()Dimi%,j%,Str$Forj=0ToList1.ListCountStr=Str&List1.List(j)&"||"Ne*tOnErrorResumeNe*tFori=0ToUBound(ConnectState)SckServer(i).SendDataStrNe*tL1:Str="Timer1.Enabled=FalseEndSub2.客戶端客戶端工程里添加兩個(gè)窗體〔Login和frmClient〕,分別如下列圖,把登陸窗體存放用戶名的文本框命名為USRN。程序代碼如下〔示,沒什么實(shí)際意義〕:PrivateSubForm_Load()IfApp.PrevInstance=TrueThenMsgBo*"程序已在運(yùn)行",vbCriticalEndEndIfUsrn.Te*t=UCase(Environ("UserName"))EndSubPrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)EndEndSubPrivateSubCommand1_Click()Me.HidefrmClient.ShowEndSubPrivateSubCommand2_Click()Usrn.Te*t="Te*t2.Te*t="EndSubPrivateSubCommand3_Click()EndEndSub在對(duì)話窗體〔frmClient〕中添加三個(gè)對(duì)象,List1用于存放在線好友,單擊選中要交談的好友,T*tsend輸入要發(fā)送的信息,t*tOutput顯示收到的信息。Connect按鈕用于重新連接效勞器。程序如下:ConstComputerName="你的計(jì)算機(jī)名字或IP地址"PrivateSubForm_Load()'Winsock控件的名字為SckClient。注意:要指定遠(yuǎn)程主機(jī),可以使用'IP地址〔例如:"121.111.1.1"〕,也可以使用計(jì)算機(jī)的“好聽的名字〞。SckClient.RemoteHost=ComputerNameSckClient.RemotePort=1001SckClient.ConnectcmdConnect.Enabled=SckClient.State=sckClosedtEndSubPrivateSubcmdConnect_Click()'調(diào)用Connect方法,初始化連接。IfSckClient.State<>sckClosedThenSckClient.CloseSckClient.ConnectcmdConnect.Enabled=SckClient.State=sckClosedEndSubPrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)EndEndSubPrivateSubCommand1_Click()'MsgBo*List1.Te*tOnErrorGoToL1IfList1.Te*t="ThenE*itSubSckClient.SendDataList1.Te*t&"|"&t*tSend.Te*tt*tOutput.Te*t=Format(Now(),"YY-MM-DDhh:mm:ss")&vbCrLf&"對(duì)"&List1.Te*t&"說:"&t*tSend.Te*t&vbCrLf&vbCrLf&t*tOutput.Te*tt*tSend.Te*t="E*itSubL1:MsgBo*"通信失敗"cmdConnect.Enabled=TrueEndSubPrivateSubList1_Click()IfList1.Te*t<>Login.Usrn.Te*tThenSpeakto.Caption="對(duì)"&List1.Te*t&"說:"ElseMsgBo*"你選擇了自己。"EndIfEndSubPrivateSubSckClient_DataArrival(ByValbytesTotalAsLong)DimstrDataAsString,ar,i%SckClient.GetDatastrData,vbStringIfLen(t*tOutput.Te*t)>512Thent*tOutput.Te*t="IfRight(strData,2)="||"ThenList1.Clearar=Split(strData,"||")Fori=0ToUBound(ar)Ifar(i)<>"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 一年級(jí)下冊(cè)道德與法治教學(xué)設(shè)計(jì)-13 我想和你們一起玩 人教部編版
- 三年級(jí)英語(yǔ)上冊(cè) Unit 1 Hello!I'm Monkey Lesson 2教學(xué)設(shè)計(jì) 人教精通版(三起)
- 三年級(jí)語(yǔ)文下冊(cè) 第八單元 口語(yǔ)交際 講一個(gè)有趣的故事教學(xué)設(shè)計(jì) 新人教版
- 主題一 任務(wù)一 穿越信息的時(shí)空 教學(xué)設(shè)計(jì) -2023-2024學(xué)年桂科版初中信息技術(shù)七年級(jí)上冊(cè)
- 非人力資源的人力資源管理培訓(xùn)
- 六年級(jí)數(shù)學(xué)上冊(cè) 七 百分?jǐn)?shù)的應(yīng)用第1課時(shí) 百分?jǐn)?shù)的應(yīng)用(一)(1)配套教學(xué)設(shè)計(jì) 北師大版
- 2024內(nèi)蒙古融信科技服務(wù)有限公司公開招聘人員6人筆試參考題庫(kù)附帶答案詳解
- 高速公路7S管理培訓(xùn)
- 九年級(jí)物理上冊(cè) 第四章 認(rèn)識(shí)電路 第2節(jié) 電路的連接教學(xué)設(shè)計(jì) 教科版
- 二年級(jí)品德與社會(huì)下冊(cè) 生活中的環(huán)保問題教學(xué)設(shè)計(jì) 未來版
- 四年級(jí)下冊(cè)道德與法治期末考試題(含答案)部編人教版
- 實(shí)驗(yàn)四酸性磷酸酶及值測(cè)定
- 動(dòng)產(chǎn)質(zhì)押監(jiān)管業(yè)務(wù)的風(fēng)險(xiǎn)防控及分散
- 山東省臨沂市蘭山區(qū)2022~2023+學(xué)年八年級(jí)下學(xué)期物理期末試卷
- 從礦業(yè)權(quán)價(jià)款到礦業(yè)權(quán)出讓收益
- 地鐵16號(hào)線風(fēng)閥設(shè)備維修保養(yǎng)手冊(cè)
- 新疆維吾爾自治區(qū)保障性住房建設(shè)標(biāo)準(zhǔn)(正文)
- 《護(hù)士執(zhí)業(yè)注冊(cè)申請(qǐng)審核表》(新版)
- 橋牌比賽形式簡(jiǎn)介
- 肩手綜合征的現(xiàn)代康復(fù)治療演示
- 六角螺母加工實(shí)習(xí)指導(dǎo)書
評(píng)論
0/150
提交評(píng)論