




已閱讀5頁,還剩3頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
武漢理工大學計算機網絡與通信課程設計說明書服務器端程序 / TODO: Add extra initialization hereaddr.sin_family=AF_INET;/TCP IPv4 addr sin_port=htons(8090); /指定端口號,動態端口的范圍從1024到65535,這里使用8090 addr.sin_addr.S_un.S_addr=INADDR_ANY; /*機器上可能有多塊網卡,也就有多個IP地址, 如果指定為INADDR_ANY,那么系統將綁定默認的網卡即IP地址*/ s=:socket(AF_INET,SOCK_STREAM,0); /利用socket函數創建套接字 :bind(s,(sockaddr*)&addr,sizeof(addr);/調用bind函數把套接字s綁定到本地地址和指定端口號上 :listen(s,5); /s監聽網絡中的所有客戶機:WSAAsyncSelect(s,this-m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ);/接收讀和連接通知 GetDlgItem(IDC_TEXT)-EnableWindow(true); /激活編輯框顯示 GetDlgItem(IDC_ADDR)-SetWindowText(服務器開始監聽!);void CTCPDlg:OnSocket(WPARAM wParam,LPARAM lParam) CString str; CString str13; CString str14; unsigned short int str15; char cs100=0;switch (lParam)/響應通知 case FD_ACCEPT: int lenth=sizeof(add1); s1=:accept(s,(sockaddr*)&add1,&lenth); /*s1為服務器和客戶端通信的套接字 add1為客戶端通信的套接字*/ n=n+1; str13.Format(有%d客戶已經連接上了,n); /str13=有n客戶已經連接上了 str13+=rn; str13+=:inet_ntoa(add1.sin_addr); /ip地址轉換成點分十進制的字符串 str13+=登陸; GetDlgItem(IDC_TEXT)-GetWindowText(str); str13+=rn; str+=str13; GetDlgItem(IDC_TEXT)-SetWindowText(str); /顯示已經連接以及連接的客戶端 str14=:inet_ntoa(add1.sin_addr); GetDlgItem(client_ip)-SetWindowText(str14); /顯示客戶端的ip str15=htons(add1.sin_port); SetDlgItemInt(client_port,str15,1); /顯示客戶端的port CString st; st=I am a server.; :send(s1,st.GetBuffer(1),strlen(st),0);break;case FD_READ: CString num=,num1=,num2=; :recv(s1,cs,100,0); /接收客戶端的數據 for(int i=0;iGetWindowText(num1); num1+=rn; num+=num1; num+=(LPTSTR):inet_ntoa(add1.sin_addr); /LPTSTR與char*等價 num+=客戶端:; num+=num2; GetDlgItem(IDC_TEXT)-SetWindowText(num); /顯示客戶端發來的信息 break;void CTCPDlg:OnSend() /發送按鈕的事件函數/ TODO: Add your control notification handler code hereCString str=,str1,str2;GetDlgItem(IDC_SENDTEXT)-GetWindowText(str);if(str=)MessageBox(發送的消息不能為空);/不能發送空消息elseif(:send(s1,str.GetBuffer(1),strlen(str),0)!=SOCKET_ERROR) GetDlgItem(IDC_TEXT)-GetWindowText(str1);str1+=rn;str1+=發送:; str1+=str; GetDlgItem(IDC_TEXT)-SetWindowText(str1);/顯示發送的消息 elseGetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn;str1+=消息發送失敗!; GetDlgItem(IDC_TEXT)-SetWindowText(str1); /提示發送消息失敗客戶端程序GetDlgItem(IDC_SENDTEXT)-EnableWindow(false);GetDlgItem(IDC_SEND)-EnableWindow(false); /禁止發送s=:socket(AF_INET,SOCK_STREAM,0);/創建套接字: WSAAsyncSelect(s,this-m_hWnd,WM_SOCKET, FD_READ);/接收讀通知void CTCPDlg:OnConnect() /連接按鈕的事件函數 CString str,str1; int port; GetDlgItem(IDC_ADDR)-GetWindowText(str); GetDlgItem(IDC_PORT)-GetWindowText(str1); /輸入服務器IP和端口號 if(str=|str1=) MessageBox(服務器地址或端口不能為NULL); else port=atoi(str1.GetBuffer(1); /把字符串形式的port轉換成整型數 addr.sin_family=AF_INET; addr.sin_addr.S_un.S_addr=inet_addr(str.GetBuffer(1); /將點分十進制的IP轉換成長整數型數 addr.sin_port=ntohs(port); /將無符號短整形port由網絡字節順序轉換為主機字節順序 /addr存儲服務器套接字信息,s存儲客戶端套接字信息 GetDlgItem(IDC_TEXT)-SetWindowText(正在連接服務器.rn); if(:connect(s,(sockaddr*)&addr,sizeof(addr) /向服務器發送連接請求 CString st; st=I am aclient; :send(s,st.GetBuffer(1),strlen(st),0); GetDlgItem(IDC_TEXT)-GetWindowText(str); str+=連接服務器成功!rn; GetDlgItem(IDC_TEXT)-SetWindowText(str); GetDlgItem(IDC_SENDTEXT)-EnableWindow(true); /發送框可用 GetDlgItem(IDC_SEND)-EnableWindow(true); /發送按鈕可用 GetDlgItem(IDC_ADDR)-EnableWindow(false); /禁止再在輸入服務器ip GetDlgItem(IDC_PORT)-EnableWindow(false); /禁止再輸入服務器的端口號 else GetDlgItem(IDC_TEXT)-GetWindowText(str); str+=連接服務器失敗!請重試rn; GetDlgItem(IDC_TEXT)-SetWindowText(str); void CTCPDlg:OnSend() /發送按鈕的事件函數/ TODO: Add your control notification handler code hereCString str,str1;GetDlgItem(IDC_SENDTEXT)-GetWindowText(str);if(str=)MessageBox(發送的消息不能為空);/不能發送空消息else if(:send(s,str.GetBuffer(1),strlen(str),0)!=SOCKET_ERROR)GetDlgItem(IDC_TEXT)-GetWindowText(str1);str1+=rn;str1+=發送:+str;GetDlgItem(IDC_TEXT)-SetWindowText(str1);/顯示發送的消息 else GetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn;str1+=消息發送失敗!; GetDlgItem(IDC_TEXT)-SetWindowText(str1); /提示發送消息失敗void CTCPDlg:OnSocket(WPARAM wParam,LPARAM lParam)char cs100=0; if(lParam=FD_READ)CString num=,num2=;:recv(s,cs,100,0);for
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇州大學附屬中學2024-2025學年第二學期普通高中半期考試高三物理試題含解析
- 山東菏澤市曹縣重點中學2025屆初三下學期入學考試化學試題試卷含解析
- 南陽理工學院《景觀設計(1)》2023-2024學年第一學期期末試卷
- 宜賓學院《英語測試》2023-2024學年第一學期期末試卷
- 江蘇省江陰市澄西中學2024-2025學年初三下學期期末調研測試數學試題文試題含解析
- 遼寧省營口市大石橋市水源九一貫制校2024-2025學年全國中考統一考試模擬試題(二)生物試題含解析
- 上海浦東新區2024-2025學年高三英語試題2月調研試題含解析
- 內蒙古師范大學《廣播電視新聞采訪與報道》2023-2024學年第二學期期末試卷
- 湘潭醫衛職業技術學院《中醫內科護理學》2023-2024學年第一學期期末試卷
- 二零二五版農資買賣合同書范文
- 美術教室裝修合同模板
- 陜西省漢中市高2025屆高三上學期第一次校際聯考試卷歷史(含答案)
- 2024華僑、港澳臺聯考高考數學試卷
- 2024年“五史”教育全文
- 海綿城市項目專項工程施工方案
- Unit 7 Happy Birthday!Section A(教學教學設計)2024-2025學年人教版英語七年級上冊
- 同仁堂集團招聘筆試題庫2024
- 2023年二級注冊計量師考試題目及答案
- 免疫治療中假性進展的機制與評估標準
- 公路水運工程施工企業主要負責人和安全生產管理人員考核大綱和模擬試題庫1
- 互動硬件體感交互設備
評論
0/150
提交評論