国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

2019-11-18 17:27:48
字體:
供稿:網(wǎng)友
在一個單位內(nèi)部或通過廣域協(xié)議(如X.25)互聯(lián)的行業(yè)內(nèi)部都有幾十或上萬臺計算機(jī)互聯(lián),用Intranet雖然可以建立聊天室,但實現(xiàn)點對點實時對話卻比較困難。本人用Winsock和VB自制了一套聊天室和對話系統(tǒng),特拿來供同行們參考。

一·Winsock的主要屬性、事件和方法

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

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

②RemoteHost//準(zhǔn)備連接遠(yuǎn)程機(jī)的
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)加載,請看任務(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ò)連接失敗(超時)!"

Label3.Caption="等待連接"

Combo1.Enabled=True

Combo1.SetFocus

a.Close

Comm2.Caption="連接"

EndSub



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

Constmaxn=200‘最大同時連接本機(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)一客戶請求時給啟動一Winsock控件標(biāo)志號

IfNotuser(i)Then

user(i)=True

ExitFor

EndIf

Nexti

Ifi>maxnThen

ExitSub

EndIf

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

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

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)注釋:卸載一個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

三·運行

本程序在VB6.0中編譯通過,運行后最小化到任務(wù)欄上,也可以用API的Shell_Notifyicon函數(shù)做入右下角的指示器欄中常駐內(nèi)存。你可以在網(wǎng)絡(luò)中用一個固定的機(jī)器地址作為聊天討論室,其他用戶都選該機(jī)地址連接進(jìn)入該室聊天或討論。各用戶也可選各自熟悉的地址進(jìn)行連接對話,雙擊form1空白處從內(nèi)存中撤出系統(tǒng)。根據(jù)同樣的原理可以制作電子郵件系統(tǒng)。->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 马关县| 湖北省| 米泉市| 杭锦后旗| 建始县| 桓仁| 青田县| 阳泉市| 稻城县| 聂荣县| 甘孜| 天全县| 墨脱县| 香港 | 阳高县| 广宗县| 海城市| 东安县| 昌图县| 尼勒克县| 兰州市| 吉林省| 房产| 永川市| 滦平县| 云霄县| 景谷| 九寨沟县| 静宁县| 广西| 惠州市| 民县| 福建省| 蓝山县| 兴国县| 砀山县| 英超| 拉萨市| 崇文区| 阜新市| 环江|