999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VS的網絡聊天室設計與實現

2020-09-29 07:51:13宋毅
電腦知識與技術 2020年17期

宋毅

摘要:隨著網絡編程應用軟件普及,用戶使用網絡應用更加廣泛,對于技術人員掌握多線程技術在網絡程序設計中的應用,理解流式套接字程序設計模型,熟悉WinSock套接字庫的加載,熟練掌握各類WinSock中API函數。該聊天室分為客戶端和服務器端兩端設計與實現。設計網絡聊天室對于用戶具有實際應用價值。

關鍵詞:VS;網絡編程;聊天室

中圖分類號:TP311 ? ? ? ?文獻標識碼:A

文章編號:1009-3044(2020)17-0085-02

Abstract:With the popularization of network programming application software, users use network applications more widely. For technicians to master the application of multithreading technology in network programming, understand the flow socket programming model, be familiar with the loading of Winsock socket socket library, and master API functions in various Winsock. The chat room is divided into client and server-side design and implementation. The design of network chat room has practical application value for users.

Key words:VS;network programming;chat room

1 基礎知識

WinSock的加載,建立監聽、接受連接、數據發送和數據接受使用的WinSock中的listen、connect、send和recv;發送數據是.NET中寬字節和多字節的相互轉換;線程函數的定義和線程啟動。

2 設計步驟

2.1 服務端程序設計

1)創建項目

創建一個對話框應用程序,項目名稱為“Fuwuqi”,在創建向導中設置“Windows套接字”,支持網絡編程,其他采用默認設置,設計對話框如圖1所示。添加一個列表控件,為其關聯CListCtrl類型的變量m_list,設置控件的View屬性為report,添加編輯框,為其關聯CString類型的變量bianjikuang,添加按鈕,為其建立消息映射。注意,添加成員變量過程如果有誤,請刪除對應頭文件和源文件內的成員變量名字,重新填寫即可。

2)修改FuwuqiDlg.h文件,頭文件需要添加例如變量的聲明等

在FuwuqiDlg.h文件中添加線程函數聲明,代碼如下,注意不要在類內寫。

UINT thread(LPVOID)

3)編輯服務器端函數內容,寫入對應程序

對話框程序自己帶初始化功能,初始化計數器相關參數,首先調試這個函數的核心代碼如下:

libiaokuang.InsertColumn(0,_T("消息"));//列表框內容顯示信息

libiaokuang.SetColumnWidth(0,435); //設置列表框寬度

bianjikuang.fuwu.sin_family=AF_INET;

fuwu.sin_port=5000;/;

addlen=sizeof(fuwu);

sock=socket(AF_INET,SOCK_STREAM,0); //創建socket

if (bind(sock,(sockaddr*)&fuwu,addlen)) ?//綁定

bianjikuang = _T("綁定錯誤");

else

{

m_edit = _T("服務器創建成功");

listen(sock,5); ? ? ? //開始偵聽

AfxBeginThread(&thread,0); ? ?//調用線程

}

//更新數據包

// 除非將焦點設置到控件,否則返回TRUE

}

void CFuwuerDlg::OnBnClickedSend()//發送消息核心代碼

{

libiaokuang.InsertItem(jishuqi++,bianjikuang);//插入計數統計

msgjishuqi=dlg->getjishuqi();//獲得客戶端flag { ?s=1; ?dlg->taojiezi[msgjishuqi]=accept(dlg->sock,(sockaddr*)&(dlg->fuwu),&(dlg->addlen));

if (dlg->taojiezi[msgjishuqi]==INVALID_SOCKET) /判斷連接是否有效套接字

dlg->bianjikuang = _T("連接錯誤");

else

{ AfxBeginThread(thread,0); ? ? ?//啟動線程

dlg->libiaokuang.InsertItem(dlg->jishuqi++,_T("連接成功"));

dlg->libiaokuang.Scroll(chicun);

while(s!=SOCKET_ERROR) ? ? //循環接收數據

{ s=recv(dlg->taojiezi[msgjishuqi],buff,100,0);

CString temp; //定義臨時變量

DWORD dwNum = ::MultiByteToWideChar (

CP_ACP, 0, buff, -1, NULL, 0);

wchar_t *pwText = new wchar_t[dwNum];

MultiByteToWideChar (CP_ACP, 0, buff, -1, pwText, dwNum);

temp.Format(_T("%s"),pwText);

delete []pwText;

//異常處理

dlg->libiaokuang.InsertItem(dlg->jishuqi++,_T("斷開連接"));

dlg->libiaokuang.Scroll(chicun);

dlg->taojiezi[msgjishuqi]=NULL;

for (int m=0;m<100;m++)

if (dlg->taojiezi[m]!=NULL) flag=1;

closesocket(dlg->taojiezi[msgjishuqi]);}} //終止線程

}

//getjishuqi()實現獲得還沒有使用的socket數組號

//sendtoall(SOCKET s,char *buff) 實現向所有客戶發送數據

2.2 客戶端程序設計

1)創建項目

創建一個對話框應用程序,項目名稱為“Kehuaduan”,在創建向導中設置“Windows套接字”,支持網絡編程,其他采用默認設置。添加一個列表控件,為其關聯CListCtrl類型的變量libiaokuang,設置控件的View屬性為report,添加兩個編輯框,分別為其關聯CString類型的變量m_ip和m_message,添加兩個按鈕,為其建立消息映射。

2)修改KehuaduanDlg.h文件,添加代碼如下:

在KehuaduanDlg.h文件中添加線程函數聲明,代碼如下,注意不要在類內寫。

UINT thread(LPVOID);

3)修改KehuaduanDlg.cpp,各函數的代碼如下:

連接服務器核心

clisock=socket(AF_INET,SOCK_STREAM,0); //創建socket

AfxBeginThread(thread,0); ? ? //啟動線程

//發送消息和服務器端類似

UINT thread(LPVOID v) //客戶端接收線程核心

{ connect(dlg->clisock,(sockaddr*)&(dlg->cli),chicunof(dlg->cli)); //連接到服務器

dlg->libiaokuang.InsertItem(dlg->jishuqi++,_T("連接成功"));

while(s!=SOCKET_ERROR) ? ? ? ?//循環獲得數據

{ s=recv(dlg->clisock,buff,100,0); ? ?//調用recv函數接收數據

CString temp;

DWORD dwNum = ::MultiByteToWideChar (CP_ACP, 0, buff, -1, NULL, 0);

wchar_t *pwText = new wchar_t[dwNum];

MultiByteToWideChar (CP_ACP, 0, buff, -1, pwText, dwNum);

temp.Format(_T("%s"),pwText);

delete []pwText;

dlg->libiaokuang.InsertItem(dlg->jishuqi++,temp);

dlg->libiaokuang.Scroll(chicun); }

send(dlg->clisock,"斷開連接",100,0); ? ? //發送斷開命令

closesocket(dlg->clisock);

}

編譯、鏈接并運行兩個對話框程序,首先建立服務器監聽,然后客戶端連接服務器,即可運行測試。

參考文獻:

[1] 任海峰,趙君.移動學習國內外研究現狀分析[J].成人教育,2010,30(1):95-96.

[2] 聶維,劉小豫.基于Linux的聊天室的設計與實現[J].電腦與電信,2018(9):27-28.

[3] 任琴,孔令慧,秦冰.基于JAVA的多人聊天室的系統設計[J].時代農機,2018,45(1):142.

[4] 董敏,桑建建.基于Linux的網絡聊天系統的設計[J].信息與電腦(理論版),2017(23):142-143.

[5] 張萍萍,紀志堅.基于Python的聊天軟件的設計與實現[J].網絡安全技術與應用,2017(5):67-71.

[6] 常穎.基于ASP網絡聊天室設計與實現[J].電子技術與軟件工程,2017(05):70-71.

[7] 畢娜.局域網聊天室系統的設計與實現[J].福建電腦,2016,32(5):135-136,145.

[8] 胡楠.網頁即時聊天系統的設計與實現[J].信息與電腦(理論版),2015(7):19,21.

[9] 張龍.聊天系統的設計與實現[D].大連:大連理工大學,2015.

[10] Wenjun Yang,Jiaying Zhang,Chundong Wang,et al. Situation prediction of large-scale Internet of Things network security[J].EURASIP Journal on Information Security,2019,2019(1).

【通聯編輯:代影】

主站蜘蛛池模板: 久久久久亚洲AV成人人电影软件| 中文字幕在线播放不卡| 91麻豆国产在线| 在线观看无码a∨| 午夜日b视频| 国产av色站网站| 热99精品视频| 国产视频久久久久| 亚洲无码视频图片| 国产在线视频二区| 亚洲欧洲AV一区二区三区| 国产精品手机在线播放| 亚洲中文在线看视频一区| 国产一区二区三区精品久久呦| 日本精品αv中文字幕| 欧美激情视频二区三区| 午夜日本永久乱码免费播放片| 亚洲综合久久一本伊一区| 啪啪国产视频| 久久综合色88| 国产波多野结衣中文在线播放| 欧美中出一区二区| 免费xxxxx在线观看网站| 99免费视频观看| 亚洲最大福利视频网| 美女国内精品自产拍在线播放 | 久久夜色精品国产嚕嚕亚洲av| 国产日产欧美精品| 亚洲日韩精品欧美中文字幕| 伊人色天堂| 亚洲最大情网站在线观看| 精品无码人妻一区二区| 欧美在线精品怡红院| 女人18毛片水真多国产| 久久这里只精品国产99热8| 亚洲资源在线视频| 2021国产精品自拍| 国产精品偷伦视频免费观看国产| 国内老司机精品视频在线播出| 色呦呦手机在线精品| 人妻少妇乱子伦精品无码专区毛片| 青青操视频在线| аⅴ资源中文在线天堂| 国产成人亚洲毛片| 永久成人无码激情视频免费| 亚洲美女久久| 国产香蕉一区二区在线网站| 国产精品无码久久久久AV| 久久这里只有精品66| 国产成人精品亚洲日本对白优播| 亚洲男人天堂网址| 国产在线精品美女观看| 亚洲天堂网在线观看视频| 狠狠干欧美| 一本大道AV人久久综合| 色综合天天综合| 在线国产你懂的| 亚洲欧洲日本在线| 波多野结衣视频网站| 国产黑丝视频在线观看| 任我操在线视频| 国产一线在线| 欧洲极品无码一区二区三区| 国产午夜无码片在线观看网站| 欧美日韩中文字幕在线| 91视频99| 另类欧美日韩| a级毛片视频免费观看| 亚洲AⅤ永久无码精品毛片| 久久精品丝袜| 国产精品免费福利久久播放| 2020精品极品国产色在线观看| 国产精品久久久久久久久kt| 国产网友愉拍精品| 国产在线观看91精品| 国产成人综合久久精品下载| 亚洲人成网线在线播放va| 日韩欧美中文亚洲高清在线| 亚洲欧美自拍中文| 欧美午夜在线观看| 99伊人精品| 久久亚洲美女精品国产精品|