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九色在线播放| 久久香蕉国产线| 成人午夜视频网站| 一级毛片在线播放免费观看| 99九九成人免费视频精品| 精品伊人久久久久7777人| 免费国产黄线在线观看| 狼友av永久网站免费观看| 114级毛片免费观看| 中文字幕亚洲精品2页| 国产va在线观看| 国产成人精品视频一区二区电影| 一区二区三区四区精品视频 | 亚洲A∨无码精品午夜在线观看| 免费毛片全部不收费的| 久久午夜影院| 欧美成人aⅴ| 欧美午夜在线观看| 国产日韩欧美在线视频免费观看| 666精品国产精品亚洲| 亚洲成A人V欧美综合天堂| AV天堂资源福利在线观看| 中文字幕在线日本| 2020最新国产精品视频| 免费毛片视频| 国内精品免费| 成人福利在线观看| 国产男人天堂| 成人综合网址| 国产一区二区丝袜高跟鞋| 啊嗯不日本网站| 97av视频在线观看| 日韩a级片视频| 国产伦精品一区二区三区视频优播| 青草视频久久| 国产成人av一区二区三区| 欧美高清视频一区二区三区| 欧美亚洲欧美| 91久久国产综合精品| 亚洲美女一级毛片| 中文国产成人久久精品小说| 亚洲国产精品美女| 97免费在线观看视频| 亚洲AV电影不卡在线观看| 亚洲国产看片基地久久1024 | 亚洲码一区二区三区| 免费人成黄页在线观看国产| 亚洲国产成人久久精品软件| 国产在线一二三区| 国产91色在线| 亚洲高清中文字幕| 人妻精品全国免费视频| 久久精品国产亚洲麻豆| 特级欧美视频aaaaaa| 无码丝袜人妻| 亚洲国内精品自在自线官| 不卡网亚洲无码| 又爽又大又光又色的午夜视频| 真实国产乱子伦视频| 成人在线观看不卡| 91po国产在线精品免费观看| 国产综合另类小说色区色噜噜| 国产性猛交XXXX免费看| 91视频日本| 高清乱码精品福利在线视频| 91亚洲视频下载| 亚洲三级片在线看| 毛片手机在线看| 日韩免费中文字幕| 亚洲精品黄| 亚洲国产日韩在线观看| 欧美一级99在线观看国产| 波多野结衣无码视频在线观看| 亚洲色图在线观看| 亚洲福利片无码最新在线播放| 国产后式a一视频| 亚洲中文字幕日产无码2021| 国产激情无码一区二区APP| 亚洲三级视频在线观看|