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

正文內(nèi)容

基于套接字的聊天程序設(shè)計(jì)-wenkub.com

2024-11-02 03:49 本頁(yè)面
   

【正文】 HCURSOR CCUDPServerDlg::OnQueryDragIcon() { 23 / 39 return static_castHCURSOR(m_hIcon)。 int y = (() cyIcon + 1) / 2。 CRect rect。 void CCUDPServerDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this)。 ()。 // 設(shè)置大圖標(biāo) SetIcon(m_hIcon, FALSE)。 if (!()) { pSysMenuAppendMenu(MF_SEPARATOR)。 if (pSysMenu != NULL) { BOOL bNameValid。 ASSERT((IDM_ABOUTBOX amp。CCUDPServerDlg::OnBnClickedBtnStart) ON_BN_CLICKED(IDC_Btn_Cancle, amp。 DDX_IPAddress(pDX, IDC_IPADDRESS, m_LocateIP)。 m_LocateIP = ntohl(i_addr())。 protected: virtual void DoDataExchange(CDataExchange* pDX)。 //根據(jù)用戶(hù)名查找該用戶(hù)的 ip 和端口信息 }。 dest, const CStringamp。 // 本地綁定 IP int m_LocatePort。 //將退出的用戶(hù)從堆棧中移除 void UpdateUserInfo()。//表示當(dāng)前用戶(hù)數(shù)量 Cuser userArray[userMaxNum]。 static CCUDPServerDlg *GetDialog()。 afx_msg void OnPaint()。 protected: virtual void DoDataExchange(CDataExchange* pDX)。 } CCUDPServerDlg類(lèi),該類(lèi)為界面類(lèi),主要進(jìn)行與用戶(hù)進(jìn)行交互 下面給出該類(lèi)的源代碼 18 / 39 // : 頭文件 // pragma once include include const int userMaxNum = 50。 } void Cuser::setPORT(int port) //設(shè)置端口 { thisPORT=port。 } //默認(rèn)構(gòu)造函數(shù) Cuser::Cuser(void) { 17 / 39 } Cuser::~Cuser(void) { } void Cuser::setUserName(CString name) //設(shè)置用戶(hù)姓名 { thisuserName=name。 // include include //重寫(xiě)構(gòu)造函數(shù) Cuser::Cuser(CString ip,int port,CString name,CString id) { thisIP=ip。 //設(shè)置端口 int getPORT( )。 //設(shè)置用戶(hù)姓名 CString getUserName( )。 //用戶(hù)標(biāo)識(shí),使用 ip+Port 來(lái)進(jìn)行標(biāo)識(shí) Cuser(CString ip,int port,CString name,CString id)。 } 16 / 39 Cuser 類(lèi),該類(lèi)主要保存用戶(hù)的基本信息 下面給出該類(lèi)的源代碼 // : 頭文件 pragma once class Cuser { public: CString IP。 //獲取數(shù)據(jù) //發(fā)送數(shù)據(jù) 參數(shù)說(shuō)明:代發(fā)送數(shù)據(jù)的數(shù)據(jù)緩存區(qū),待發(fā)送數(shù)據(jù)的長(zhǎng)度,遠(yuǎn)程套接字的結(jié)構(gòu)地址,遠(yuǎn)程主機(jī)套接字結(jié)構(gòu)地址的長(zhǎng)度,發(fā)送數(shù)據(jù)的方式 //執(zhí)行成功時(shí),就會(huì)飯后發(fā)送數(shù)據(jù)的個(gè)數(shù)(以字符作為單位) int iByte = SendTo(send_buf,strlen(send_buf)+1,htons(m_RemotePort),p)。 //發(fā)送數(shù) 據(jù) if (m_fConnected) //判斷當(dāng)前已經(jīng)為 CAsyncSocket 對(duì)象創(chuàng)建了套接字 { //獲取遠(yuǎn)程 IP = htonl(m_RemoteIP)。 } //向遠(yuǎn)程主機(jī)中發(fā)送數(shù) bool CUDPSocket::SendToRemotePC(DWORD m_RemoteIP,int m_RemotePort,CString m_SendData) { in_addr tempAddr。//將網(wǎng)絡(luò)字節(jié)的順序的表示的 IP 地址轉(zhuǎn)換為點(diǎn)分十進(jìn)制表示的 IP 地址 p = (LPCTSTR) buf。兩者的存儲(chǔ)位置是不同的,如果強(qiáng)制轉(zhuǎn)換的話(huà),不安全。 P 表示這是一個(gè)指針; C 表示是一個(gè)常量; T 表示在 Win32 環(huán)境中,有一個(gè) _T 宏,這個(gè)宏用來(lái)表示你的字符是否使用 UNICODE, 如果你的程序定義了 UNICODE 或者其他相關(guān)的宏,那么這個(gè)字符或者字符串將被作為 UNICODE字符串,否則就是標(biāo)準(zhǔn)的 ANSI字符串。 } //地址和端口綁定 bool CUDPSocket::BindLocatePC(DWORD m_LocateIP,int m_LocatePort) { in_addr tempAddr。 } CUDPSocket::~CUDPSocket(void) { } // CUDPSocket 成員 函數(shù) //事件響應(yīng)函數(shù)(當(dāng)一個(gè)套接字已經(jīng)準(zhǔn)備好了,并可以利用 Send 函數(shù)去發(fā)送數(shù)據(jù)時(shí),就可以調(diào)用該函數(shù)去處理相應(yīng)的消息) void CUDPSocket::OnSend(int nErrorCode) { CCUDPServerDlg *pDl = CCUDPServerDlg::GetDialog()。 bool SendToRemotePC(DWORD m_RemoteIP,int m_RemotePort,CString m_SendData)。 virtual ~CUDPSocket()。 coutrecvBufendl。 else if (iLen == SOCKET_ERROR) { coutrecv() fail:WSAGetLastError()endl。 } } 12 / 39 else { break。 string str=sendBuf。 coutrecvBufendl。 else if (iLen == SOCKET_ERROR) { coutrecv() fail:WSAGetLastError()endl。 return 0。 strcpy(sendBuf,hostname)。//請(qǐng)求連接服務(wù)器進(jìn)程 if ( err == INVALID_SOCKET ) { coutconnect() fail:WSAGetLastError()endl。 = i_addr()。 = AF_INET。 cincip。 cintype。 int port。 return 0。 if ( err != 0 ) { cout加載 WinSock失??! 。 int err,iLen。 } 客戶(hù)端設(shè)計(jì) : include include iostream using namespace std。 } } closesocket(sockConn)。 if((E)) { err = send(sockConn,sendBuf,strlen(sendBuf)+1,0)。 9 / 39 cout請(qǐng)輸入你要發(fā)送的消息,輸入 E退出 endl。 break。 break。 if (gethostname(hostname,100) != 0) //獲取主機(jī)名稱(chēng) strcpy(hostname,None)。 } recvBuf[iLen] = 39。 } char recvBuf[1024] = \0。addrClient,amp。 } coutServer waiting:...endl。 } coutServer has been started successfully...endl。 } //綁定本地主機(jī) IP和端口 err = bind(sockSrv,(SOCKADDR*)amp。 = htons(port)。 cout端口
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1