<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個游戲并不難,難的是做一個好游戲;完美在于積累!

    如何編寫用TCP/IP的通訊程序

       最近在網上不斷的看到有人問如何用BCB的TServerSocket和TClientSocket進行編程的問題,所以決定把我的一些編程經驗告訴給大家,讓大家能夠盡快的掌握他們的用法。

    首先要講一下他們的一些設置(屬性):
    TServerSocket 的幾個屬性
    Active       
        是否是工作狀態,可以把它設置為ture或false來啟動和停止偵聽。
    Port
        本機偵聽的端口,可以設置為一大于1024的數;
    ServerType   
        服務端的工作方式,有兩個選擇,一個是stNonBlocking 非阻塞方式,一個是stThreadBlocking線程阻塞方式,默認是非阻塞方式。用非阻塞方式編程比較簡單(我個人認為),用阻塞方式對每個連接必須自己用線程來控制收發。
    ThreadCacheSize  
        緩沖的線程個數 當ServerType是stThreadBlocking時有效。
    TClientSocket 的幾個屬性
    Active      
        是否是工作狀態,可以把它設置為ture或false來同服務端建立或斷開連接。
    Host    
        服務器(ServerSocket)的計算機名,是一個字符串
    Address
    服務器(ServerSocket)的IP地址
    ClientType
       客戶端的工作方式一種是ctNonBlocking非阻塞方式,一種是ctBlocking阻塞方式,默認是非阻塞方式
    Port
    同服務端(ServerSocket)連接的端口,這個端口就是ServerSocket的偵聽              端口
    在設置ClientSocket的(Host)主機名和設置(Address)IP地址是等效的,但設主機名需要網絡具有DNS(域名解析服務)服務器,而且設主機名要比設主機的IP地址連接的速度慢一些。建議用Address來同ServerSocket進行連接。

    設置好所有的屬性后,ServerSocket控件就可以通過將它的Active屬性置為true來進行偵聽了。ClientSocket可以通過設置它的Active屬性來同ServerSocket進行連接。連接成功就可以進行通訊了。在這個過程中會產生一些事件,下面說說他們各自的事件。

    TServerSocket的幾個事件
    OnAccept
        當一個客戶同服務端連接成功后產生這個事件,產生這個事件后這個連接就可用了,可以對這個客戶進行發送和接收數據。
    OnClientConnect  
    當一個客戶正在同服務端建立連接的時候產生此事件,在這里你可以決定是否接受這個連接。
    OnClientDisconnect
    當一個客戶同服務端的連接斷開的時候產生此事件,你需要在這里進行一些處理,如從連接列表中清除次連接釋放內存等。
    OnClientError
    當客戶同服務端出現錯誤時產生此事件,在此事件中你可以通過設置ErrorCode = 0來屏蔽系統的錯誤提示。這樣就可以避免討厭的英文錯誤了。根據ErrorEvent的不同的值來得知發生了什么錯誤,它有一下幾中錯誤類型
    eeGeneral   未知錯誤
    eeSend    發送數據出現錯誤
    eeReceive   接收數據出現錯誤
    eeConnect   客戶請求連接時出現錯誤
    eeDisconnect 客戶斷開連接時出現錯誤
    eeAccept     接受一個客戶時發生錯誤
        一般來講,當發生錯誤的時候這個客戶的連接就已經不可用了,要對這個客戶進行連接失敗處理。
    OnClientRead
    當服務端收到客戶端發來的數據的時候產生此事件。接收客戶端的數據都在這里進行。
    OnClientWrite
    當服務端發送數據的時候產生此事件。

    TClientSocket的幾個事件

    OnConnect
    同服務端(ServerSocket)連接成功后將產生此事件,產生此事件后才說明這個連接可用了,這時才可以向ServerSocket發送數據。
    OnConnecting
    正在同服務端進行連接是產生此事件。
    OnDisconnect
    同服務端的連接斷開后產生此事件,產生此事件后ClientSocket的Active屬性就為false了,這時這個連接就不可用了,必須重新進行連接才能向服務器發送數據。
    onError
    當Socket發生錯誤時產生此事件,這個事件的意義和ServerSocket的Error事件完全一樣,只是它沒有eeAccept錯誤。
    OnRead
    當接收到服務端發來的數據后產生此事件。
    OnWrite
    當向服務端發送數據的時候產生此事件。

    上面介紹了一下這兩個控件的基本屬性和事件,在掌握一些方法就可以用這兩個控件進行編寫通訊程序了,今天寫的有寫累了,改天在寫它的方法并具體使用這兩個控件編寫一個通訊程序,有兩個選擇,一個是局域網的聊天程序,一個是局域網內的控制程序,大家喜歡那一個呢?給點建議吧.

    posted on 2005-07-24 00:19 藍色雪焰 閱讀(553) 評論(0)  編輯  收藏 所屬分類: 編程技術
     
    主站蜘蛛池模板: 亚洲免费电影网站| 美美女高清毛片视频黄的一免费| 国产亚洲AV无码AV男人的天堂| 亚洲不卡中文字幕无码| 亚洲综合校园春色| 337p日本欧洲亚洲大胆人人| 美女网站在线观看视频免费的| 91免费播放人人爽人人快乐| 四虎永久免费影院在线| 亚洲AV无码一区二区乱子伦| 亚洲国产午夜精品理论片在线播放| 久久九九免费高清视频| 亚洲乱码国产一区三区| 久久久久国产精品免费看| 国产精品99久久免费| 亚洲视频中文字幕| 尤物视频在线免费观看| 亚洲一区二区三区免费在线观看| 亚洲综合图片小说区热久久| 精品无码一级毛片免费视频观看 | 国产精品无码免费专区午夜| 成人人观看的免费毛片| 国产AV无码专区亚洲AVJULIA| 无码午夜成人1000部免费视频| 亚洲国产美女精品久久| 久久久久久国产精品免费免费男同| 亚洲午夜视频在线观看| 无码人妻久久一区二区三区免费丨| 久久精品国产亚洲综合色| 中文字幕成人免费视频| 亚洲国产精品乱码一区二区| 日本最新免费网站| 亚洲人成在线免费观看| 亚洲色在线无码国产精品不卡 | 亚洲一区二区三区免费| 亚洲一二成人精品区| 热久久这里是精品6免费观看| 免费A级毛片无码久久版| 久久久久久亚洲av无码蜜芽| 中文字幕无码免费久久99| japanese色国产在线看免费|