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