• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    自己動手制作MUD客戶端服務程序

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 21次 | 進入軟件測試論壇討論

    領測軟件測試網      隨著Inte.net的發展,越來越多的人加入到這個充滿無限生機的網絡世界中來,作為一個網絡信息時代的專業電腦玩家,掌握網絡編程就顯得格外重要。本文通過一個MUD客戶端服務程序向您介紹了Internet網絡編程及MUD的一些知識。
    MUD,全稱Multiple User Dungeon,意為多用戶"地牢"游戲,現在網蟲們一般都把它叫做泥巴。如果你已經上了網的話,當你得知了一個MUD的地址和端口后你便可以加入此MUD了,在Windows95操作系統下,你可以用 "telnet地址 端口" 這條命令來登錄到MUD,但是Windows95的telnet程序由于不是專門用來玩MUD的,因此使用起來非常不方便,這主要是由于telnet不能處理文字的回繞,并且因為輸入輸出在同一窗口,造成輸入輸出信息混雜在一起,使用戶辨認困難。歷史輸入的不能重用,大大增加了用戶的輸入量。而且在MUD中服務器傳給你的信息中有很多控制信息用來使輸出文字改變顏色或突出顯示,這些信息被telnet簡單的忽略掉了,鑒于這些不便,有一些程序員開發了MUD客戶端服務程序,這些程序一般都具有這些功能:
    * 連接到MUD --- 這是基本功能
    * 命令行歷史 --- 可重用以前的命令
    * 宏命令        --- 以宏代替較長的命令
    * 輸入輸出窗口分開--- 避免輸入輸出信息混亂
    * 輸出信息回卷 --- 允許查看以前的輸出信息
    * 強調顯示 --- 能處理MUD系統傳來的控制序列
    有一些還有更高級的功能:
    * 自動登錄        --- 根據用戶歷史記錄,自動登錄到MUD
    * 多重連接 --- 允許同時連接到多個MUD上,或同時在一個MUD上登錄多人
    * 觸發裝置        --- 在某種情況下,自動發出某命令
    * 自動導航系統    --- 通過記錄east,west,south,north,up,down等命令,生成邏輯地圖,并可自動導航用戶去某地
    * 提供編程接口    --- 用戶可編程,制作機器人,代替用戶辛辛苦苦的在MUD上練功
    Dos/Windows下的MUD客戶端服務程序主要有MUDCaller,BSXMUD等,其中以Zugg Software公司的ZMud較普及,也好用,下面我們用VB來做一個我們自己的MUD Client。
    首先介紹一下Winsock控件。在VB中,利用 WinSock 控件可以與遠程計算機建立連接,并通過用戶TCP或UDP協議進行數據交換。這兩種協議都可以用來創建客戶與服務器應用程序。在創建MUD客戶端時,我們使用TCP協議。在給該控件的RemoteHost及RemotePort賦值后,調用其connect方法就可以連接到MUD主機上。然后用GetData和SendData就可以與MUD主機對話了。而從MUD主機傳來的數據是夾有escape控制字符串的ASCII文本,說到escape控制字符串,需要解釋一下, 所謂escape控制字符串是ANSI中用于鍵盤控制和顯示控制的以escape(ASCII 27/0x1B)和'['開頭的一串字符,在MUD中一般只涉及到設置輸出屬性,在escape和'['后跟a1;a2;...'m',該串以字符m結束,a1,a2等是數字,意義如下:
    0:恢復黑白顯示;
    1:高亮度顯示
    2:正常顯示
    30...37:黑,紅,綠,黃,藍,洋紅,青,白
    如:chr(27)[1;31m表示從這里起用亮紅顯示,而chr(27)[2;37;0m表示恢復黑白顯示方式并用普通白色顯示。
    現在我們打開VB,新建一個標準工程,選工程|部件菜單,加入Microsoft Winsock Control 5.0及Microsoft Rich TextBox Control 5.0這兩個控件到工具欄中。
    將Form1改名為fMud,從工具欄拖一個CommandButton到fMud上,改名叫cmdSend,設置其default屬性為True。拖一個Rich TextBox到fMud上,改名叫MudOut,設置其Text屬性為空,ScrollBars為rtfBoth。再拖一個ComboBox到fMud上,改名叫MudIn,設置Text屬性為空。最后拖一個Winsock控件到fMud上,改名叫MudSock。.下一步是用菜單編輯器給fMud做一個菜單,其中有一個子菜單起名叫Connect,主窗口就做好了。
    下面向工程里添加一個新Form,改名叫fConnect,用于接收用戶要聯往的MUD主機地址及端口。首先在上面放兩個Label,分別把Caption設為"MUD地址:" 和 "端口:",再放兩個TextBox分別起名叫tAddress和tPort,擺好位置,使兩個Label分別指向兩個TextBox,最后放一個CommandButton,使其Name=CmdConnect,Caption="&Connect",Default=True,Enabled=False。好了,下面開始編程:
    fMud窗口:
    fMud的定義部分:
        Dim bConnected as Boolean
    Connect菜單:
    If Not bConnected Then
    fConnect.Show 1
    MudSock.Connect                     '連接到MUD主機上
    bConnected = True
    MudIn.SetFocus
        End If
    fMud的Load事件:
        bConnected = False
    fMud的Resize事件:
    MudOut.Top = 0                         '調整控件的位置就大小
    MudOut.Left = 0
    MudOut.Width = fMud.Width - 120
    MudOut.Height = fMud.Height - 700
    MudIn.Top = MudOut.Height+20
    MudIn.Left = 0
    MudOut.Width = fMud.Width - 120
    MudSock的DataArrival事件:
    Dim strData As String
    If Connected Then
    MudSock.GetData strData             '從MudSock的緩沖區中取數據
    MudOut.Text = MudOut.Text+strData
    MudOut.SelStart = len (MudOut.Text)
    If len(MudOut.Text) > 2000 Then        '緩沖2000字的文本
        MudOut.Text = Right (MudOut.Text,2000)
    End If
    Ene If
    cmdSend的Click事件:
    Dim s As String
    Dim i As Integer
    s = MudIn.Text + Chr(13) & Chr(10)        '給命令行加上回車換行
    fMud.MudSock.SendData s
    For i = 1 To MudIn.ListCount
    If MudIn.List(i) = MudIn.Text Then
            MudIn.RemoveItem (i)             '刪去重復的歷史命令
    End If
    Next i
    If MudIn.ListCount > 30 Then                 '緩沖30條歷史命令
    MudIn.RemoveItem 0
    End If
    MudIn.AddItem MudIn.Text                 '將本條命令加到歷史記錄最后
    MudIn.SelStart = 0
    MudIn.SelLength = Len(MudIn.Text)        '本條命令文本被選擇,以便下
    '輸入一條命令時,不用擦除便可直接鍵入
        fConnect窗口:
    tAddress和fPort的Change事件:
            If (tAddress.Text <> "") And (tPort.Text <> "") Then
    CmdConnect.Enabled = True
    Else
                    CmdConnect.Enabled = False
                End If
    Connect按鈕的Click事件:
        fMud.MudSock.RemoteHost = tAddress.Text
        fMud.MudSock.RemotePort = CInt(tPort.Text)
    fConnect.Hide
    好了,一個MUD客戶端服務程序就做好了,你現在已經可以用它連接到MUD了。不過限于篇幅,現在本程序的功能只有輸出信息回卷,分開輸入輸出和重用歷史命令,它已比telnet玩MUD好用了。另外,要支持強調顯示功能,只需從MUD主機傳來的信息串中識別出escape'['控制串,并用RichTextBox的SelColor方法就可以設置文本顏色,這也是我們一開始為什么用RichTextBox而不用一般的TextBox的原因。最后指出,WinSock的Connect連接是否正確應在MudSock的onError事件中編程,本程序略去。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>