




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
-.z1.效勞器端往效勞器窗體〔命名為frmServer〕添加三個控件,分別為LIST1〔存放在線好友〕,te*t1〔留言容〕和te*t2〔聊天記錄〕,程序如下:OptionE*plicitConstBusyAsBoolean=FalseConstFreeAsBoolean=TrueDimConnectState()AsBooleanDimSInde*DimUsrs(0To32)'在線人名PrivateSubForm_QueryUnload(CancelAsInteger,UnloadModeAsInteger)EndEndSubPrivateSubForm_Load()IfApp.PrevInstance=TrueThenMsgBo*"程序已在運行",vbCriticalEndEndIfReDimPreserveConnectState(0)OnErrorResumeNe*tConnectState(0)=FreeListener.LocalPort=1001'端口號Listener.Listen'開場偵聽EndSubPrivateSubListener_ConnectionRequest(ByValrequestIDAsLong)DimSockInde*AsIntegerDimSockNumAsIntegerOnErrorResumeNe*tSockNum=UBound(ConnectState)IfSockNum>32ThenE*itSub'查找空閑的SckServerSockInde*=FindFreeSocket'如果已有的sock都忙,而且sock數(shù)不超過32個,動態(tài)添加sockIfSockInde*>SockNumThenLoadSckServer(SockInde*)ConnectState(SockInde*)=BusySckServer(SockInde*).Tag=SockInde*'承受請求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*)&"〞對“"&Replace(d*,"|","〞說:"&vbCrLf)&vbCrLf&Te*t2.Te*tOpenApp.Path&"\record.t*t"ForAppendAs*1Write*1,Format(Now(),"YY-MM-DDhh:mm:ss")&"“"&Usrs(Inde*)&"〞對“"&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.客戶端客戶端工程里添加兩個窗體〔Login和frmClient〕,分別如下列圖,把登陸窗體存放用戶名的文本框命名為USRN。程序代碼如下〔示,沒什么實際意義〕:PrivateSubForm_Load()IfApp.PrevInstance=TrueThenMsgBo*"程序已在運行",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在對話窗體〔frmClient〕中添加三個對象,List1用于存放在線好友,單擊選中要交談的好友,T*tsend輸入要發(fā)送的信息,t*tOutput顯示收到的信息。Connect按鈕用于重新連接效勞器。程序如下:ConstComputerName="你的計算機名字或IP地址"PrivateSubForm_Load()'Winsock控件的名字為SckClient。注意:要指定遠程主機,可以使用'IP地址〔例如:"121.111.1.1"〕,也可以使用計算機的“好聽的名字〞。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&"對"&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="對"&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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【課件】美洲+第二課時+課件-2024-2025學年七年級地理下學期湘教版
- 二零二五版存單質(zhì)押擔保合同新
- 全新成立分公司的協(xié)議書
- 安全生產(chǎn)責任協(xié)議書范例
- 工程施工終止協(xié)議書
- 二零二五版專利轉(zhuǎn)讓合同書協(xié)議書模板
- 二零二五版食堂承包的合同范例
- 二手房買賣協(xié)議書樣本模板二零二五年
- 分子診斷與腫瘤靶向治療
- 胃早癌的治療與護理
- 2025年吉林省民航機場集團長白山機場公司招聘筆試參考題庫附帶答案詳解
- 小學生涯課件
- 目光禮儀培訓
- 西藏拉薩中學2024-2025學年高三第二學期英語試題4月月考試卷含解析
- 設備驗收方案
- 高中家長會 高三高考沖刺家長會課件
- 2025-2030中國觸覺馬達行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 修訂版中小學生行為守則(2024版)
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- TSG Z7002-2022 特種設備檢測機構核準規(guī)則
- 茶葉中微量元素的鑒定與定量測定
評論
0/150
提交評論