韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

用C++ Builder創(chuàng)建基于Internet的點對點Chat

用C++ Builder創(chuàng)建基于Internet的點對點Chat

更新時間:2022-10-16 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

北京市白石橋路  周新棟

---- 創(chuàng)建基于Internet的應(yīng)用程序,你也許會想到復(fù)雜的WinSock編程。不過,C++ Builder3提供了新的WebBroker的Internet套件,其中的TClientSocket和TServerSocket組件封裝了Windows的有關(guān)API,大大簡化了WinSock編程。要通過Internet傳輸數(shù)據(jù),至少需要一對Socket,一個Socket在客戶端,另一個Socket在服務(wù)器端。其實TClientSocket、TServerSocket組件并不是Socket對象,其屬性Socket將返回各自的Socket對象。TClientSocket用來處理客戶端到服務(wù)器端之間的socket連接,TServerSocket用來處理由客戶端發(fā)來的socket連接,一旦客戶端和服務(wù)器端都接通了socket,客戶端和服務(wù)器端就可以相互通信了。

---- 建立一新項目,創(chuàng)建應(yīng)用程序的用戶界面:

---- 1.將組件頁切換到Internet頁,放一個TServerSocket組件和一個TClientSocket組件到窗體上,這樣應(yīng)用程序既可以是TCP/IP服務(wù)器,也可以是TCP/IP客戶。將Port屬性都設(shè)為同一個值(如1000),確定Socket之間的連接類型為NonBlocking(非阻塞方式)。

---- 2.放兩個TMemo組件到窗體上,用來分別顯示雙方的談話內(nèi)容,將Memo2的ReadOnly屬性設(shè)為True。

---- 3.在窗體的頂部放上一個Panel組件,在其上放三個按鈕:監(jiān)聽(btnlisten)、連接(btnconnect)、斷開(btndisconnect),用來啟動相應(yīng)的操作。

---- 4.在窗體底部放一個StatusBar組件,將其SimplePanel屬性設(shè)為True,在相應(yīng)的事件處理程序中改變狀態(tài)條信息,讓用戶隨時了解連接狀態(tài)。

---- 打開頭文件,在窗體類的Private段添加兩個私有成員: bool IsServer;String Server。雙方通信時需同時運(yùn)行Chat程序,IsServer用來確定哪個Chat程序處于服務(wù)器端,Server用來存放服務(wù)器的主機(jī)名。建立窗體類的構(gòu)造器如下:

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    IsServer=false;
    Server="localhost";
}


---- 這里Server被缺省設(shè)為localhost,這樣程序可以在沒有連入Internet的單機(jī)上進(jìn)行調(diào)試。在Windows子目錄下你可以找到hosts.sam文件中,在該文件中已經(jīng)將本機(jī)IP地址127.0.0.1定義了主機(jī)名:localhost。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    btndisconnect- >Enabled=false;
}

---- 程序運(yùn)行后,如果用戶按下"監(jiān)聽"鈕,則將該程序設(shè)為服務(wù)器端,這時應(yīng)將TServerSocket的Active屬性設(shè)為True,使服務(wù)器自動進(jìn)入監(jiān)聽狀態(tài)。
void __fastcall TForm1::btnlistenClick(TObject *Sender)
{
    ClientSocket1- >Active=false;
    ServerSocket1- >Active=true;
    StatusBar1- >SimpleText="正在監(jiān)聽...";
    btnlisten- >Enabled=false;
    btnconnect- >Enabled=false;
}

---- 當(dāng)用戶按下"連接"鈕后,程序會彈出一個詢問框,要求用戶輸入要連接的服務(wù)器的主機(jī)名,然后建立連接。
void __fastcall TForm1::btnconnectClick(TObject *Sender)
{
    if(InputQuery("連接到服務(wù)器","輸入服務(wù)器地址:",Server)){
        if(Server.Length() >0){
            ClientSocket1- >Host=Server;
            ClientSocket1- >Active=true;
            btnlisten- >Enabled=false;
            btnconnect- >Enabled=false;
            btndisconnect- >Enabled=true;
        }
    }
}


---- 當(dāng)用戶提出連接請求后,客戶端會觸發(fā)OnCreate事件,程序先在狀態(tài)條中顯示連接信息,然后將顯示對方談話內(nèi)容的Memo2清空,準(zhǔn)備開始交談。
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
      TCustomWinSocket *Socket)
{
    StatusBar1- >SimpleText="連接到:"+Server;
    Memo2- >Lines- >Clear();
}


---- 在服務(wù)器接受了客戶的請求后會觸發(fā)OnAccept事件,在這個事件處理程序中將標(biāo)志服務(wù)器端的變量IsServer設(shè)為True,并準(zhǔn)備開始交談。
void __fastcall TForm1::ServerSocket1Accept(
TObject *Sender,
      TCustomWinSocket *Socket)
{
    Memo2- >Lines- >Clear();
    IsServer=true;
    StatusBar1- >SimpleText="連接到:"
+Socket- >RemoteAddress;
}


---- 在建立連接后,雙方就可以在Memo1中輸入談話內(nèi)容開始進(jìn)行交談了,按下Enter鍵后,將所在行的文本發(fā)送出去。服務(wù)器端的Socket的Connections屬性返回一個數(shù)組,該數(shù)組由服務(wù)器當(dāng)前活動的連接組成。
void __fastcall TForm1::Memo1KeyDown(
TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if(Key==VK_RETURN){
        if(IsServer)
            ServerSocket1- >Socket- >Connections[0]- >SendText(
Memo1- >Lines- >Strings[Memo1- >Lines- >Count-1]);
        else
            ClientSocket1- >Socket- >SendText(
Memo1- >Lines- >Strings[Memo1- >Lines- >Count-1]);
    }
}


---- 在本例中我們采用非阻塞傳輸方式,當(dāng)其中的一方進(jìn)行寫操作時,另一方會觸發(fā)OnRead事件(客戶端)或OnClientRead事件(服務(wù)器端),這兩個事件的處理程序只是將接收到的內(nèi)容添加到Memo2的后面。
    Memo2- >Lines- >Add(Socket- >ReceiveText());

---- 如果在用戶建立連接后單擊"斷開"鈕,將斷開客戶端與服務(wù)器的連接,服務(wù)器端將觸發(fā)OnClientDisconnect事件,而客戶端則會觸發(fā)OnDisconnect事件,這時服務(wù)器端應(yīng)回到監(jiān)聽狀態(tài),等待用戶的連接;而客戶端將返回到連接前的狀態(tài),等待用戶再次建立連接,如果有不止一個服務(wù)器的話,可以選擇連接到其他的服務(wù)器上。
void __fastcall TForm1::btndisconnectClick(
TObject *Sender)
{
    ClientSocket1- >Close();
}
void __fastcall TForm1::ServerSocket1ClientDisconnect(
TObject *Sender,
      TCustomWinSocket *Socket)
{
    StatusBar1- >SimpleText="正在監(jiān)聽...";
}
void __fastcall TForm1::ClientSocket1Disconnect(
TObject *Sender, TCustomWinSocket *Socket)
{
    btnlisten- >Enabled=true;
    btnconnect- >Enabled=true;
    btndisconnect- >Enabled=false;
    StatusBar1- >SimpleText="";
}


---- 此外在客戶端還應(yīng)該增加錯誤捕獲機(jī)制,當(dāng)用戶輸入無效的服務(wù)器名或服務(wù)器端沒有處于監(jiān)聽狀態(tài)時能夠及時給用戶反饋信息。
void __fastcall TForm1::ClientSocke
t1Error(TObject *Sender,
      TCustomWinSocket *Socket,
TErrorEvent ErrorEvent, int &ErrorCode)
{
StatusBar1- >SimpleText="無法連接到:
"+Socket- >RemoteHost;
    ErrorCode=0;
}

---- 以上代碼在C++ Builder3 C/S版中編譯、運(yùn)行通過。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
国产v综合ⅴ日韩v欧美大片| 国产精品免费观看高清| 91麻豆成人精品国产| 亚洲精品天堂成人片av在线播放| 91精品在线观看入口| 欧美日韩aaa| 欧美日韩激情电影| a黄色片在线观看| 国产精品免费视频观看| 欧美一区二区在线观看| 午夜在线观看免费一区| 欧美黄网站在线观看| 亚洲成a人片77777在线播放| 日韩成人av网址| 三级毛片在线免费看| 日本黄色免费在线观看| 亚洲主播在线| 久久久无码人妻精品一区| 亚洲二区在线观看| 鲁一鲁一鲁一鲁一av| 少妇被狂c下部羞羞漫画| 国产精品男女| 一本大道香蕉久久| av成人在线观看| 中文字幕免费不卡在线| 亚洲视频在线免费观看| 久久亚洲AV无码| 国产精品电影一区| 日韩三级在线播放| 999精品在线观看| 色久视频在线播放| 日本一级理论片在线大全| 992tv在线影院| 97se亚洲国产综合自在线不卡| 跑男十一季在线观看免费| 国产精品传媒入口麻豆| 中国女人内谢69xxx视频| 亚洲欧美日本日韩| 亚洲一级影院| 隔壁人妻偷人bd中字| 天堂久久久久久| 超碰人人草人人| 欧美gv在线观看| 日韩美女av在线| 免费理论片在线观看播放老| 国产亚洲在线观看| 亚洲精品国偷拍自产在线观看蜜桃| 蝴蝶中文综合娱乐网| 强迫凌虐淫辱の牝奴在线观看| 黄色大片免费观看| 国产盗摄视频在线观看| 国产亚洲精品久久久久久打不开| 午夜电影福利网| 可以在线看黄的网站| 国产精品久久久久久久| 国内精品国产成人| 精品一区二区三区欧美| 久久久这里只有精品视频| 欧洲亚洲精品在线| 精品乱色一区二区中文字幕| 超碰97人人在线| 999久久久| 欧美黄色影院| xxxwww在线观看| 亚洲精品中文字幕无码蜜桃| h文在线观看免费| 在线观看国产高清视频| 欧美日韩性视频| 成年网站视频| 男男视频在线观看网站| 亚洲一区成人在线| 国产精品免费无遮挡| 国产手机视频在线观看| 一区二区三区四区精品在线视频| 久久精品免费| 欧美做受69| 成人黄色网址| 影音先锋欧美精品| 亚洲一区 欧美| 久久久久亚洲AV| 亚洲一道本在线| 美女胸又www又黄的网站| 少妇精品视频一区二区免费看| 成人中文字幕在线| 国产日产欧美一区二区三区| 亚洲香蕉在线视频| 中国国产一级毛片| 欧美亚洲愉拍一区二区| 成人欧美一区二区三区白人| 日韩小视频在线观看专区| 日韩美脚连裤袜丝袜在线| 国产精品久久久久av电视剧| 91插插插插插插插插| 欧洲av一区二区| 中文字幕在线播放第一页| 久久99精品久久久久久野外| 国产精品无码久久久久成人app| 熟妇人妻av无码一区二区三区| 欧美中文一区二区三区| 999热精品视频| 久久国产精品系列| 夜间精品视频| 欧美xxxx18| 51xtv成人影院| 中文字幕一区二区三区不卡在线| 日韩视频精品在线| 日本福利视频| www.亚洲一二| 蜜臀av色欲a片无码精品一区| 欧洲一级视频| 牛夜精品久久久久久久99黑人| 国产精品女主播视频| 日本一级大毛片a一| 丰满熟妇乱又伦| 91成人破解版| 日韩精品一区二区三区高清免费| 成人黄色一级大片| 亚洲一级淫片| 久久99精品国产自在现线小黄鸭| 蜜桃av久久久亚洲精品| 精品国产91久久久久久老师| 色一情一乱一伦| 99精品热视频| 国精产品一区一区| 一区二区三区中文字幕| 国产精品久久久久久在线观看| 在线观看成年人视频| 天天综合av| 99久久婷婷这里只有精品| 一区二区在线观看免费视频播放| 91香蕉视频在线观看| 男生草女生视频| 97蝌蚪自拍自窝| 成人3d漫画免费无遮挡软件| 伊人久久大香线蕉综合影院首页| 欧美日韩视频一区二区| 日韩xxxxxxxxx| 日韩国产伦理| 日韩精品中文字幕在线| 亚洲日本视频在线观看| 国产成人禁片免费观看视频| 成人免费观看网址| 国产精品成久久久久| 久久这里只有精品6| 日韩中文字幕在线一区| 影视先锋久久| 色播在线视频| 欧美一级特黄aaaaaa在线看片| 国产一区二区三区中文| 99riav视频在线观看| 成人小视频在线| 欧美一区二区三区在线电影| 欧美主播一区二区三区美女| 男人天堂999| 噜噜噜久久,亚洲精品国产品| 久久精品女同亚洲女同13| 亚洲私人影院在线观看| 性欧美大战久久久久久久免费观看| 亚洲一区二区小说| 正在播放亚洲精品| 神马伦理电影| 国产精品xxxxxx| 亚洲欧美一区二区激情| 俄罗斯黄色一级片| 黄色激情视频在线观看| 欧美大片大片在线播放| 亚洲免费激情| 精品人妻一区二区三区四区| 综合激情亚洲| 国产色婷婷国产综合在线理论片a| www.国产视频.com| 国产做受高潮漫动| 欧美电影《睫毛膏》| 国产欧美一区二区三区网站| 另类春色校园亚洲| 久久国产精品久久久久久久久久| 亚洲视频精品一区| 日韩中文字在线| 中文字幕一区二区在线播放| 成人午夜视频在线观看| 欧美日韩国产麻豆| 正在播放国产精品| 久久一区二区三区视频| 蜜臀久久久99精品久久久久久| 国产高清在线观看视频| 亚洲成人在线视频网站| 欧美77777免费视频| 国产精品另类一区| 天堂中文在线官网| 丝袜国产日韩另类美女| 日本国产一区| 香蕉影院在线| 黄色另类av| 久久女同性恋中文字幕| 天堂av在线免费| 国产一级揄自揄精品视频| 国产成人精品电影久久久| 久久人人爽人人片| 国产传媒日韩欧美成人| 国产乱对白刺激视频不卡| 欧美人妻精品一区二区免费看| 成年人网站免费看| 日本一道本视频| 美女视频黄的免费| 老牛国产精品一区的观看方式| 91杏吧porn蝌蚪| 日韩一区在线播放| 亚洲午夜视频在线观看| √新版天堂资源在线资源| 国产精品日本一区二区三区在线| 波多野结衣在线免费观看| 黄色片av在线| 一区二区三区日本视频| 91精品国产综合久久福利| 妺妺窝人体色www看人体| 亚洲久色影视| 性欧美video高清bbw| 日本无删减在线| av成人老司机| 亚洲影院污污.| 久久精品视频8| 97色在线观看免费视频| 精品久久久久久久久久久院品网| 国产伦精品一区二区三区| 中文字幕精品三级久久久| 91精品啪在线观看国产爱臀| 欧美乱妇18p| 噜噜噜91成人网| 精品人妻一区二区三区免费看| 91在线看视频| 91大学生片黄在线观看| 国产成人自拍在线| 自拍偷拍激情视频| 中文字幕亚洲欧美日韩在线不卡| 国产精品美女毛片真酒店| 极品白浆推特女神在线观看| 国产5g影院天天爽天天看| 欧美在线视频一区| 91精品国产高清久久久久久91裸体| 青春草视频在线观看| 国产成人无码一区二区三区在线| 中文成人无字幕乱码精品区| 欧美色视频日本版| 国产电影一区二区| 久久露脸国语精品国产91| 在线观看亚洲视频| 欧亚乱熟女一区二区在线| 丝袜美腿亚洲一区二区| 亚洲啪av永久无码精品放毛片| 亚洲性猛交富婆| 日韩黄色视屏| 91黄视频在线| 北条麻妃av毛片免费观看| 男人亚洲天堂| 51av在线| 高清中文字幕mv的电影| 一本色道久久综合亚洲aⅴ蜜桃| 色播色播色播色播色播在线| 亚洲精品极品少妇16p| 黄色精品视频| 老司机福利av| 欧美女同网站| 久久亚洲私人国产精品va媚药| 日本a级在线| 狠狠色伊人亚洲综合网站色| 国产美女扒开尿口久久久| 日韩欧美激情一区二区| 国产精品香蕉一区二区三区| 北岛玲一区二区三区| 两性午夜免费视频| 色婷婷成人在线| 久久免费播放视频| 亚洲网站视频福利| 91亚洲视频在线观看| 日韩一卡二卡三卡国产欧美| luxu259在线中文字幕| 欧美喷潮久久久xxxxx| 日韩亚洲欧美中文字幕| av女人的天堂| 国产精品jvid在线观看| 粉嫩av四季av绯色av第一区| 国产精品自产拍| 国产免费区一区二区三视频免费| 九色porn蝌蚪| 高清日韩中文字幕| 久久久久久国产精品免费无遮挡| 欧美中文在线免费| 无码粉嫩虎白一线天在线观看| 日本视频一区二区| 91一区二区三区在线| 欧美日韩中文字幕日韩欧美| 欧美一区二区三区电影在线观看| 日韩美女写真福利在线观看| 91极品视频在线观看| 久久在线视频在线| 日韩免费久久| 人妻少妇偷人精品久久久任期| 欧美日韩亚洲综合| av在线一区不卡| 日本少妇性生活| 波多野结衣办公室双飞| 88久久精品无码一区二区毛片| 久久一区二区电影| 2019中文字幕在线电影免费| 欧美精品久久久久久久自慰| 激情亚洲综合网| 欧美一级特黄a| 国产人成视频在线观看| 中文在线字幕免费观看| 日日摸日日添日日躁av| 精品久久久久久一区二区里番| 欧美国产日韩中文字幕在线| 综合激情在线| 欧美一区二区三区影院| 91露出在线| 国产亚洲一区二区三区在线观看| 国产大片精品免费永久看nba| 色综合天天色综合| 成人免费一级片| 精品国产日韩欧美| 在线丝袜欧美日韩制服| 日韩一区二区中文| 成年人网站在线免费观看| 欧美高清第一页| 97人妻人人揉人人躁人人| 91成人在线精品| 免费av毛片在线看| 91综合视频|