freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于udp協(xié)議的聊天工具的設(shè)計(jì)_研究生課程論文-在線瀏覽

2024-10-28 14:11本頁(yè)面
  

【正文】 摩能夠編寫(xiě),但是最后遇到了一個(gè)最大的問(wèn)題,就是通過(guò) 的自網(wǎng)測(cè)試沒(méi)有問(wèn)題,但是在不同電腦相互通信的時(shí)候,往往套接字創(chuàng)建失敗,這個(gè)問(wèn)題一直困擾了我很長(zhǎng)的時(shí)間,不管我怎么看 代碼都找不出其中的原因。只需要改為其他的端口,即可在不同電腦之間的相互通信。 這次課程設(shè)計(jì)是我和我的同學(xué)一起完成的,我們通過(guò)相互的討論和研究,終于完成了這個(gè)聊天程序,我們的合作很愉快,也非常感謝老師的幫助,希望我們?cè)谝院蟮膶W(xué)習(xí)中能夠迎接新的挑戰(zhàn)。 if(!AfxSocketInit()) //判斷這個(gè)函數(shù)是否為 0 { AfxMessageBox(加載套接字庫(kù)失敗! )。 //返回 FALSE,關(guān)閉 } else { AfxMessageBox(加載套接字庫(kù)成功! )。 BOOL CChatDlg::InitSocket() { m_socket=socket(AF_INET,SOCK_DGRAM,0)。 Socket()是 1個(gè)創(chuàng)建套接字的函數(shù),如果創(chuàng)建不成功,返回 INVALID_SOCKET。 */ { MessageBox(創(chuàng)建套接字失??! )。 } SOCKADDR_IN addrSock。 =AF_INET。 /*端口為 5000,用 htons函數(shù)轉(zhuǎn)換成網(wǎng)絡(luò)字節(jié)序 */ //獲取主機(jī) IP地址,并賦值給結(jié)構(gòu)體內(nèi)變量。 //用 bind函數(shù)將本地地址和建立的套接字進(jìn)行綁定。 retval=bind(m_socket,(SOCKADDR*)amp。 //進(jìn)行判斷,如果綁定失敗,關(guān)閉套接字,進(jìn)行消息提示,返回 FALSE。 MessageBox(套接字與本地機(jī)地址綁定失敗! )。 } else { MessageBox(套接字與本地機(jī)地址綁定成功! )。 } 建立 1 個(gè)結(jié)構(gòu)體 RECVPARAM,并用指針 pRecvParam 指向它。 /*用 new給指針?lè)峙?1個(gè)動(dòng)態(tài)空間 */ pRecvParamhwnd=m_hWnd。 //傳遞套接字 10 用 CreateThread創(chuàng)建一個(gè)新的線程,然后 創(chuàng)建線程句柄 hThread,用來(lái)接收 CreateThread返回的句柄值。 CloseHandle(hThread)。 */ 新線程執(zhí)行函數(shù) RecvProc() DWORD WINAPI CChatDlg::RecvProc(LPVOID lpParameter) { //取出所傳遞的 2個(gè)參數(shù)值 , 1個(gè)是套接字, 1個(gè)是對(duì)話 框句柄 。 HWND hwnd=((RECVPARAM*)lpParameter)hwnd。/*定義 1個(gè) 套接字地址結(jié)構(gòu)變量, 接收發(fā)送端的地址信息 。 //接收返回地址結(jié)構(gòu)體的長(zhǎng)度。 //字符數(shù)組,用來(lái)接收到來(lái)的數(shù)據(jù)。 //用 來(lái)存放格式化后的數(shù)據(jù)。 while(TRUE) //做一個(gè)循環(huán),讓它不斷接收數(shù)據(jù) { retval=recvfrom(sock,recvBuf,100,0, //retval接收 recvfrom的返回值 (SOCKADDR*)amp。len)。 */ { 11 break。 sprintf(tempBuf,%s說(shuō) :%s,i_ntoa(), recvBuf)。 ::PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf)。 } 對(duì)接收到的消息進(jìn)行處理,使得能夠按照一定格式輸出 。 void CChatDlg::OnRecvData(WPARAM wParam,LPARAM lParam) { CString str=(char*)lParam。 CString strTemp。 GetDlgItemText(IDC_EDIT_RECV,strTemp)。 str+=\r\n。 。 //再下一行加入 先前的數(shù)據(jù)。//將數(shù)據(jù)放回接收的編輯框。//定義 DWORD類型變量,用來(lái)接收控件的 IP地址。//通過(guò) GetDlgItem,得到控件的 CWnd指針,再轉(zhuǎn)換類型,得到 dwIP。 //定義地址結(jié)構(gòu)體變量。 =htonl(dwIP)。 CString strSend。/*得到編輯框的文本,傳遞給 strSend。addrTo,sizeof(SOCKADDR))。 SetDlgItemText(IDC_EDIT_SEND,)。 */ } 13 附錄 在 ChatApp 類中的 IniInstance(void)函數(shù)中添加一段代碼: if(!AfxSocketInit()) { AfxMessageBox(加載套接字庫(kù)失??! )。 } else { AfxMessageBox(加載套接字庫(kù)成功! )。 endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg()。 //}}AFX_DATA // ClassWizard generated virtual function overrides 14 //{{AF
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1