資源描述:
《基于ipv6的網(wǎng)絡(luò)編程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、課程設(shè)計(jì)報(bào)告課程:基于IPv6的網(wǎng)絡(luò)編程學(xué)號(hào):20082212285姓名:付希善班級(jí):網(wǎng)絡(luò)0802教師:李阿麗魯東大學(xué)信息科學(xué)與工程學(xué)院15設(shè)計(jì)名稱與內(nèi)容一、Winsock編程技術(shù)WindowsSockets是Windows下網(wǎng)絡(luò)編程的規(guī)范,是Windows下得到廣泛應(yīng)用的、開(kāi)放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。經(jīng)過(guò)不斷完善它已成為Windows網(wǎng)絡(luò)編程的事實(shí)上的標(biāo)準(zhǔn)。Winsock是windows應(yīng)用程序與下層網(wǎng)絡(luò)協(xié)議之間的交互接口,通過(guò)socket,可以很容易的實(shí)現(xiàn)應(yīng)用程序的網(wǎng)絡(luò)連接。Winsock也是Wind
2、ows進(jìn)行網(wǎng)絡(luò)通信編程的API接口。在網(wǎng)絡(luò)編程中最常用的方案是客戶/服務(wù)器模式,首先由服務(wù)器在指定的端口開(kāi)通指定的服務(wù),然后在客戶機(jī)上通過(guò)指定服務(wù)器地址、服務(wù)端口來(lái)連接服務(wù)器以獲取指定的服務(wù)。二、聊天程序的功能及其相關(guān)網(wǎng)絡(luò)協(xié)議使用可靠的TCP來(lái)實(shí)現(xiàn)端到端的連接,使用到的協(xié)議是TCP協(xié)議。采用的體系結(jié)構(gòu)風(fēng)格是服務(wù)器/客戶端風(fēng)格(C/S)。服務(wù)器端建立socket連接,然后監(jiān)聽(tīng)端口,等待客戶端的連接。在客戶端連接之前,消息編輯窗口都設(shè)置為不可編輯狀態(tài)。當(dāng)有客戶端連接后,消息編輯窗口才設(shè)置為可編輯狀態(tài)。本程序的功能就是
3、實(shí)現(xiàn)簡(jiǎn)單的基于TCP協(xié)議的聊天,即簡(jiǎn)單的消息發(fā)送。三、聊天程序流程圖和設(shè)計(jì)方案1)聊天程序流程圖15服務(wù)器端socket函數(shù)建立套接字bind函數(shù)給套接字指定本地地址listen函數(shù)進(jìn)行監(jiān)聽(tīng)accept函數(shù)建立連接建立連接,從accept返回用于通信的新套接字建立連接send函數(shù)和recv函數(shù)收發(fā)數(shù)據(jù)Closesocket函數(shù)關(guān)閉套接字connect函數(shù)與服務(wù)器建立連接send函數(shù)和recv函數(shù)收發(fā)數(shù)據(jù)Closesocket函數(shù)關(guān)閉套接字客戶端socket函數(shù)建立套接字2)設(shè)計(jì)方案服務(wù)器端的設(shè)計(jì):服務(wù)器端的界面由
4、一個(gè)主窗口加三個(gè)控件組成,其中有兩個(gè)edit控件和一個(gè)button控件。程序設(shè)計(jì)窗口截圖如下:指定好服務(wù)端口號(hào),本程序指定為1111。然后建立窗口函數(shù)所關(guān)心的SOCKET通信消息,為程序?yàn)镕D_ACCEPT和FD_READ。在服務(wù)器端建立本地socket,用bind函數(shù)綁定本地套接字地址,最大連接數(shù)設(shè)置為5。完成之后進(jìn)行監(jiān)聽(tīng),看是否有客戶端請(qǐng)求連接,若有則接受連接。建立連接之后用,如果要發(fā)送數(shù)據(jù),則在下面的sendEdit里面輸入想要發(fā)送的內(nèi)容,然后點(diǎn)擊“發(fā)送”按鈕?!卑l(fā)送”15按鈕發(fā)送出一個(gè)WM_COMMAND
5、消息,窗口函數(shù)接收WM_COMMAND消息,將接收到的消息用send函數(shù)發(fā)送出去。當(dāng)客戶端有消息發(fā)送過(guò)來(lái)的時(shí)候,同樣的要捕獲消息,用recv函數(shù)進(jìn)行接收數(shù)據(jù)。通信結(jié)束之后釋分配給套接字的資源。客戶端的設(shè)計(jì):客戶端的界面設(shè)計(jì)和服務(wù)器端的基本一致,是窗口標(biāo)題不同。程序設(shè)計(jì)窗口截圖如下:指定好待連接的服務(wù)器的IP地址和服務(wù)器端口號(hào),很顯然地端口和服務(wù)器設(shè)置的一樣,為1111。然后建立窗口函數(shù)所關(guān)心的SOCKET通信消息,這里需要設(shè)置FD_ACCEPT和FD_CONNECT。根據(jù)連接服務(wù)器的套接字,使用connect函數(shù)
6、建立連接。當(dāng)要發(fā)送消息的時(shí)候則在下面的sendEdit里面輸入想要發(fā)送的內(nèi)容,然后點(diǎn)擊“發(fā)送”按鈕?!卑l(fā)送”按鈕發(fā)送出一個(gè)WM_COMMAND消息,窗口函數(shù)接收WM_COMMAND消息,將接收到的消息用send函數(shù)發(fā)送出去。當(dāng)客戶端有消息發(fā)送過(guò)來(lái)的時(shí)候,同樣的要捕獲消息,用recv函數(shù)進(jìn)行接收數(shù)據(jù)。通信結(jié)束之后釋分配給套接字的資源。四、選擇開(kāi)發(fā)環(huán)境開(kāi)發(fā)環(huán)境:VisualC++6.0設(shè)計(jì)過(guò)程(步驟)或程序代碼源程序:1)服務(wù)器端.#include#include#defi
7、neID_RECEIVEEDIT1#defineID_SENDEDIT2#defineID_PUSHME3#defineSERVER_PORT1111#defineWM_SOCKET(WM_USER+1)LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpcmdLine,intnCmdShow){15staticTCHARszAppName
8、[]=TEXT("ChatServer");staticTCHARszClassName[]=TEXT("ChatServerClass");HWNDhwnd;MSGmsg;WNDCLASSwndclass;wndclass.style=CS_HREDRAW
9、CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExt