亚洲综合社区欧美综合色-欧美逼逼一区二区三区-国产老熟女高潮精品网站-国产日韩最新视频在线看

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊(cè)有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁(yè) > 幫助中心>文章內(nèi)容

用Winsock制作一套聊天室和對(duì)話系統(tǒng)

發(fā)布時(shí)間:  2012/6/24 15:13:59
·Winsock的主要屬性、事件和方法

Winsock是不可見控件,控件文件名是MSWINSCK.OCX,全稱為Mcirosoftwinsockcontrol,使用時(shí)要將此控件調(diào)入工具箱。

1·屬性:①Protocol=0//使用TCP協(xié)議;

②RemoteHost//準(zhǔn)備連接遠(yuǎn)程機(jī)的IP地址

③RemotePort//連接遠(yuǎn)程機(jī)的IP端口號(hào)(1024—65535之間)

④LocalPort//本地機(jī)監(jiān)聽I(yíng)P端口號(hào)必須與呼叫機(jī)端口號(hào)相同

2·方法:①connect//申請(qǐng)連接遠(yuǎn)程機(jī)

②listen//設(shè)置監(jiān)聽

③accept//建立實(shí)際連接

④senddata//發(fā)送數(shù)據(jù)

⑤getdata//接收數(shù)據(jù)

⑥close//關(guān)閉連接

3·事件:①connectionrequest//一方請(qǐng)求連接時(shí)另一方產(chǎn)生

②connect//一方機(jī)接受連接時(shí)另一方產(chǎn)生

③close//一方機(jī)關(guān)閉連接時(shí)另一方產(chǎn)生

④dataArrival//一方發(fā)送數(shù)據(jù)另一方產(chǎn)生

⑤error//請(qǐng)求連接失敗時(shí)產(chǎn)生

二·制作方法

⑴在一工程中添加兩個(gè)表單form1(模擬客戶端)、form2(模擬服務(wù)器端)。

form1中裝入控件:

控件名
主要屬性
用途

VB.Formform1
caption=”雷萌聊天室”

controlbox=0‘False
模擬客戶機(jī)表單

VB.Textboxtext1
multiline=-1‘True

scrollbars=3‘Bath
用于輸入發(fā)往聊天室的信息

VB.Textboxtext2
locked=-1‘True

multiline=-1‘True

scrollbars=3‘Bath
顯示從聊天室發(fā)來的信息

VB.Comboboxcombo1
text=”10.84.234.11”‘任定默認(rèn)地址
放入常用的地址

VB.Commandbuttoncomm1
caption=”退出”
最小化form1

VB.Commandbuttoncomm2
caption=”連接”
請(qǐng)求與輸入的地址連接

VB.Commandbuttonsend
caption=”發(fā)送”
發(fā)送Text1中的內(nèi)容

VB.Labellabel1
caption=“請(qǐng)?jiān)诖溯斎氚l(fā)表的信息”
Text1的框標(biāo)

VB.Labellabel2
caption=“聊天室或?qū)Ψ降男畔?rdquo;
Text2的框標(biāo)

VB.Labellabel3
caption=”等待連接”
顯示連接狀態(tài)信息

VB.Labellabel4
caption=”聊天室或?qū)Ψ降刂?rdquo;
用于指示Combo1

VB.Labellabel5
caption=”操作:選地址連接,連接成功看到聊天室內(nèi)容后再輸信息發(fā)送”
操作說明

VB.Timertimer1
interval=6000;enabled=false
防止連接超時(shí)

MSWinsocklib.winsocka

用于數(shù)據(jù)傳輸






form2中裝入控件:

控件名
主要屬性
用途

VB.Formform2
caption=”接收信息”

controlbox=0‘False
模擬客戶機(jī)表單

VB.Commandbuttoncommand1
caption=”返回”
隱含F(xiàn)orm2窗口

VB.Commandbuttoncommand2
caption=”對(duì)話”
點(diǎn)對(duì)點(diǎn)會(huì)話時(shí)用此直接啟動(dòng)Form1

VB.Textboxtext1
locked=-1‘True

multiline=-1‘True

scrollbars=3‘Bath
存放聊天或?qū)υ拑?nèi)容

VB.Labellabel1
caption=”接收的信息”
Text1的框標(biāo)

MSWinsocklib.Winsocka

用于監(jiān)聽

MSWinsocklib.Winsockb

用于傳送聊天信息




⑵在Form1的各控件事件中加入如下代碼:

DimflagAsBoolean注釋:連接狀態(tài)變量



PrivateSuba_Connect()

flag=True

EndSub



PrivateSuba_DataArrival(ByValbytesTotalAsLong)

DimiAsString

a.GetDatai

Label3.Caption="連接成功!"

Comm2.MousePointer=0

Form1.MousePointer=0

Timer1.Enabled=False

Ifi=Chr(0)Then

Text2.Text="你是今天第一個(gè)進(jìn)入本聊天室的客戶。" Chr(13) Chr(10)

Else

Text2.Text=Text2.Text i

EndIf

Text2.SelStart=Len(Text2.Text)

Send.MousePointer=0

Combo1.Enabled=False

Comm2.Caption="斷開連接"

Text1.SetFocus

EndSub



PrivateSuba_Error(ByValNumberAsInteger,DescriptionAsString,ByValScodeAsLong,ByValSourceAsString,ByValHelpFileAsString,ByValHelpContextAsLong,CancelDisplayAsBoolean)

flag=False

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

MsgBox"網(wǎng)絡(luò)連接失。"

Label3.Caption="等待連接"

Combo1.Enabled=True

Combo1.SetFocus

a.Close

Comm2.Caption="連接"

EndSub



PrivateSubComm1_Click()

a.Close注釋:關(guān)閉連接

Form1.WindowState=1

EndSub



PrivateSubComm2_Click()

IfComm2.Caption="斷開連接"Then

a.Close

Comm2.Caption="連接"

Label3.Caption="等待連接"

Combo1.Enabled=True

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

Else

Text2.Text=""

Label3.Caption="正在連接.."

Comm2.MousePointer=11

Form1.MousePointer=11

Timer1.Enabled=True

flag=False

a.Protocol=sckTCPProtocol

a.RemoteHost=Combo1.Text

a.RemotePort=3000

a.Connect

EndIf

EndSub



PrivateSubForm_DblClick()

IfMsgBox("關(guān)閉本聊天室!確認(rèn)嗎?",36,"退出系統(tǒng)")=6Then

End

Else

Form1.WindowState=1

EndIf

EndSub



PrivateSubForm_Load()

IfApp.PrevInstanceThen

MsgBox"本系統(tǒng)已經(jīng)加載,請(qǐng)看任務(wù)攔!",48,"提示"

End

EndIf

flag=False

LoadForm2‘讀入form2進(jìn)入監(jiān)聽

EndSub



PrivateSubSend_Click()

DimSAsString

OnErrorGoToffff‘防止鏈路中斷

Send.MousePointer=11

IfRight(Text1.Text,1)<>Chr(10)Then

S=Text1.Text Chr(13) Chr(10)

Else

S=Text1.Text

EndIf

IfflagThen

a.SendDataS

EndIf

ExitSub

ffff:

MsgBox"連接中斷!",48,"提示"

a.Close

Send.MousePointer=0

Comm2.Caption="連接"

Label3.Caption="等待連接"

Combo1.Enabled=True

Comm2.MousePointer=0

Form1.MousePointer=0

ExitSub

EndSub



PrivateSubTimer1_Timer()

flag=False

Timer1.Enabled=False

Comm2.MousePointer=0

Form1.MousePointer=0

MsgBox"網(wǎng)絡(luò)連接失敗(超時(shí))!"

Label3.Caption="等待連接"

Combo1.Enabled=True

Combo1.SetFocus

a.Close

Comm2.Caption="連接"

EndSub



⑶在Form2的各控件事件中加入如下代碼:

Constmaxn=200‘最大同時(shí)連接本機(jī)的客戶數(shù)

Dimuser(maxn)AsBoolean



PrivateSubCommand1_Click()

Form2.Hide

EndSub



PrivateSubCommand2_Click()

LoadForm1

Form1.Show

EndSub



PrivateSubForm_Load()

Dimstr1AsString

Form2.Caption="雷萌通信軟件"

注釋:winsock控件a作為服務(wù)器程序監(jiān)聽

a.LocalPort=3000

a.Listen

EndSub



PrivateSuba_ConnectionRequest(ByValrequestIDAsLong)

DimiAsLong

Fori=1Tomaxn‘當(dāng)一客戶請(qǐng)求時(shí)給啟動(dòng)一Winsock控件標(biāo)志號(hào)

IfNotuser(i)Then

user(i)=True

ExitFor

EndIf

Nexti

Ifi>maxnThen

ExitSub

EndIf

Loadb(i)‘當(dāng)一客戶請(qǐng)求時(shí)啟動(dòng)一Winsock控件

b(i).AcceptrequestID注釋:實(shí)際建立連接

IfText1.Text=""Then注釋:發(fā)送數(shù)據(jù)

b(i).SendDataChr(0)

Else

b(i).SendDataText1.Text

EndIf

Form2.Show

EndSub



PrivateSubs_Close(IndexAsInteger)

b(Index).Close注釋:關(guān)閉連接

Unloadb(Index)注釋:卸載一個(gè)WinSock控件

user(Index)=False

EndSub



PrivateSubb_DataArrival(IndexAsInteger,ByValbytesTotalAsLong)

DimstrAsString

DimiAsLong

b(Index).GetDatastr

Text1.Text=Text1.Text str

Fori=1Tomaxn

Ifuser(i)Then

b(i).SendDatastr

EndIf

Nexti

EndSub

三·運(yùn)行


本文出自:億恩科技【1tcdy.com】

服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營(yíng)性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營(yíng)性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營(yíng)性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線