1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        用Winsock制作一套聊天室和對話系統

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

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

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

        ②RemoteHost//準備連接遠程機的IP地址

        ③RemotePort//連接遠程機的IP端口號(1024—65535之間)

        ④LocalPort//本地機監聽IP端口號必須與呼叫機端口號相同

        2·方法:①connect//申請連接遠程機

        ②listen//設置監聽

        ③accept//建立實際連接

        ④senddata//發送數據

        ⑤getdata//接收數據

        ⑥close//關閉連接

        3·事件:①connectionrequest//一方請求連接時另一方產生

        ②connect//一方機接受連接時另一方產生

        ③close//一方機關閉連接時另一方產生

        ④dataArrival//一方發送數據另一方產生

        ⑤error//請求連接失敗時產生

        二·制作方法

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

        form1中裝入控件:

        控件名
        主要屬性
        用途

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

        controlbox=0‘False
        模擬客戶機表單

        VB.Textboxtext1
        multiline=-1‘True

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

        VB.Textboxtext2
        locked=-1‘True

        multiline=-1‘True

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

        VB.Comboboxcombo1
        text=”10.84.234.11”‘任定默認地址
        放入常用的地址

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

        VB.Commandbuttoncomm2
        caption=”連接”
        請求與輸入的地址連接

        VB.Commandbuttonsend
        caption=”發送”
        發送Text1中的內容

        VB.Labellabel1
        caption=“請在此輸入發表的信息”
        Text1的框標

        VB.Labellabel2
        caption=“聊天室或對方的信息”
        Text2的框標

        VB.Labellabel3
        caption=”等待連接”
        顯示連接狀態信息

        VB.Labellabel4
        caption=”聊天室或對方地址”
        用于指示Combo1

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

        VB.Timertimer1
        interval=6000;enabled=false
        防止連接超時

        MSWinsocklib.winsocka

        用于數據傳輸






        form2中裝入控件:

        控件名
        主要屬性
        用途

        VB.Formform2
        caption=”接收信息”

        controlbox=0‘False
        模擬客戶機表單

        VB.Commandbuttoncommand1
        caption=”返回”
        隱含Form2窗口

        VB.Commandbuttoncommand2
        caption=”對話”
        點對點會話時用此直接啟動Form1

        VB.Textboxtext1
        locked=-1‘True

        multiline=-1‘True

        scrollbars=3‘Bath
        存放聊天或對話內容

        VB.Labellabel1
        caption=”接收的信息”
        Text1的框標

        MSWinsocklib.Winsocka

        用于監聽

        MSWinsocklib.Winsockb

        用于傳送聊天信息




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

        DimflagAsBoolean注釋:連接狀態變量



        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="你是今天第一個進入本聊天室的客戶。" 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"網絡連接失!"

        Label3.Caption="等待連接"

        Combo1.Enabled=True

        Combo1.SetFocus

        a.Close

        Comm2.Caption="連接"

        EndSub



        PrivateSubComm1_Click()

        a.Close注釋:關閉連接

        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("關閉本聊天室!確認嗎?",36,"退出系統")=6Then

        End

        Else

        Form1.WindowState=1

        EndIf

        EndSub



        PrivateSubForm_Load()

        IfApp.PrevInstanceThen

        MsgBox"本系統已經加載,請看任務攔!",48,"提示"

        End

        EndIf

        flag=False

        LoadForm2‘讀入form2進入監聽

        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"網絡連接失敗(超時)!"

        Label3.Caption="等待連接"

        Combo1.Enabled=True

        Combo1.SetFocus

        a.Close

        Comm2.Caption="連接"

        EndSub



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

        Constmaxn=200‘最大同時連接本機的客戶數

        Dimuser(maxn)AsBoolean



        PrivateSubCommand1_Click()

        Form2.Hide

        EndSub



        PrivateSubCommand2_Click()

        LoadForm1

        Form1.Show

        EndSub



        PrivateSubForm_Load()

        Dimstr1AsString

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

        注釋:winsock控件a作為服務器程序監聽

        a.LocalPort=3000

        a.Listen

        EndSub



        PrivateSuba_ConnectionRequest(ByValrequestIDAsLong)

        DimiAsLong

        Fori=1Tomaxn‘當一客戶請求時給啟動一Winsock控件標志號

        IfNotuser(i)Then

        user(i)=True

        ExitFor

        EndIf

        Nexti

        Ifi>maxnThen

        ExitSub

        EndIf

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

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

        IfText1.Text=""Then注釋:發送數據

        b(i).SendDataChr(0)

        Else

        b(i).SendDataText1.Text

        EndIf

        Form2.Show

        EndSub



        PrivateSubs_Close(IndexAsInteger)

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

        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

        三·運行


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线