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).

【通聯編輯:代影】

主站蜘蛛池模板: 久久久久久久久久国产精品| 91小视频版在线观看www| 欧美在线视频a| 亚洲精品国产综合99| 国产精品分类视频分类一区| 国产99免费视频| 97色婷婷成人综合在线观看| 国产成人乱码一区二区三区在线| 国产精品美女网站| 国产小视频免费观看| 国产午夜精品一区二区三区软件| 成人精品免费视频| 亚洲天堂.com| 新SSS无码手机在线观看| 蜜桃视频一区| 久热精品免费| 亚洲视频在线青青| 丰满少妇αⅴ无码区| 麻豆国产在线观看一区二区 | 青青草原国产| 2020精品极品国产色在线观看| 丁香亚洲综合五月天婷婷| 亚洲乱码在线播放| 无码啪啪精品天堂浪潮av| 五月婷婷亚洲综合| 亚洲天堂久久| 在线a网站| 欧美激情第一欧美在线| 午夜性爽视频男人的天堂| 久久超级碰| 不卡午夜视频| 欧美97色| 久久青草视频| 色天天综合久久久久综合片| 日韩一级毛一欧美一国产| 日本欧美视频在线观看| 欧美一级在线| 色老头综合网| 2021国产乱人伦在线播放| 97se亚洲综合在线韩国专区福利| 欧美精品v欧洲精品| 91精品久久久久久无码人妻| 亚洲第一黄色网址| 青草精品视频| 97se亚洲综合在线天天| 欧美日韩免费观看| 亚洲成人播放| 亚洲免费毛片| 3D动漫精品啪啪一区二区下载| 五月综合色婷婷| 亚洲 成人国产| 九九精品在线观看| 97久久免费视频| 国产在线观看人成激情视频| 91原创视频在线| 中文精品久久久久国产网址 | 成人在线观看不卡| 色综合天天娱乐综合网| 一级毛片在线免费视频| 亚洲男人的天堂在线| 日韩中文字幕免费在线观看| 国产一级毛片网站| 伊人激情综合| 香蕉久久国产超碰青草| 欧美天堂久久| 97se亚洲综合不卡| 呦系列视频一区二区三区| 久久综合伊人 六十路| 67194在线午夜亚洲| 国产亚洲视频在线观看| 亚洲va精品中文字幕| 特级欧美视频aaaaaa| 久久国产精品波多野结衣| 色悠久久久久久久综合网伊人| 美女内射视频WWW网站午夜 | 成人一区专区在线观看| 久久精品娱乐亚洲领先| 狠狠色狠狠色综合久久第一次| 欧美人与性动交a欧美精品| 91热爆在线| 婷婷色婷婷| 亚洲色欲色欲www在线观看|