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

正文內(nèi)容

基于套接字的聊天程序設(shè)計(jì)-閱讀頁

2024-11-26 03:49本頁面
  

【正文】 DE 或者其他相關(guān)的宏,那么這個(gè)字符或者字符串將被作為 UNICODE字符串,否則就是標(biāo)準(zhǔn)的 ANSI字符串。 同樣, LPCSTR 就只能是一個(gè) ANSI 字符串,在程序中我們大部分時(shí)間要使用帶 T 的類型定義。兩者的存儲(chǔ)位置是不同的,如果強(qiáng)制轉(zhuǎn)換的話,不安全。 //獲取本地 IP = htonl(m_LocateIP)。//將網(wǎng)絡(luò)字節(jié)的順序的表示的 IP 地址轉(zhuǎn)換為點(diǎn)分十進(jìn)制表示的 IP 地址 p = (LPCTSTR) buf。 } 15 / 39 //設(shè)置連接標(biāo)志 m_fConnected = true。 } //向遠(yuǎn)程主機(jī)中發(fā)送數(shù) bool CUDPSocket::SendToRemotePC(DWORD m_RemoteIP,int m_RemotePort,CString m_SendData) { in_addr tempAddr。 CString buf。 //發(fā)送數(shù) 據(jù) if (m_fConnected) //判斷當(dāng)前已經(jīng)為 CAsyncSocket 對(duì)象創(chuàng)建了套接字 { //獲取遠(yuǎn)程 IP = htonl(m_RemoteIP)。//i_ntoa 將網(wǎng)絡(luò)字節(jié)順序表示的 IP 地址裝換位點(diǎn)分十進(jìn)制表示的 IP 地址 p = (LPCTSTR) buf。 //獲取數(shù)據(jù) //發(fā)送數(shù)據(jù) 參數(shù)說明:代發(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)。 else return false 。 } 16 / 39 Cuser 類,該類主要保存用戶的基本信息 下面給出該類的源代碼 // : 頭文件 pragma once class Cuser { public: CString IP。//用戶開設(shè)的端口 CString userName。 //用戶標(biāo)識(shí),使用 ip+Port 來進(jìn)行標(biāo)識(shí) Cuser(CString ip,int port,CString name,CString id)。 ~Cuser(void)。 //設(shè)置用戶姓名 CString getUserName( )。 //設(shè)置 IP CString getIP( )。 //設(shè)置端口 int getPORT( )。 //設(shè)置 ID CString getID( )。 // include include //重寫構(gòu)造函數(shù) Cuser::Cuser(CString ip,int port,CString name,CString id) { thisIP=ip。//初始化端口 thisuserName=name。 } //默認(rèn)構(gòu)造函數(shù) Cuser::Cuser(void) { 17 / 39 } Cuser::~Cuser(void) { } void Cuser::setUserName(CString name) //設(shè)置用戶姓名 { thisuserName=name。 } void Cuser::setIP(CString ip) //設(shè)置 IP { thisIP=ip。 } void Cuser::setPORT(int port) //設(shè)置端口 { thisPORT=port。 } void Cuser::setID(CString id) //設(shè)置 ID { thisID=id。 } CCUDPServerDlg類,該類為界面類,主要進(jìn)行與用戶進(jìn)行交互 下面給出該類的源代碼 18 / 39 // : 頭文件 // pragma once include include const int userMaxNum = 50。 // 標(biāo)準(zhǔn)構(gòu)造函數(shù) // 對(duì)話框數(shù)據(jù) // enum { IDD=IDD_CUDPSERVER_DIALOG }。 protected: virtual void DoDataExchange(CDataExchange* pDX)。 // 生成的消息映射函數(shù) virtual BOOL OnInitDialog()。 afx_msg void OnPaint()。 DECLARE_MESSAGE_MAP() public: afx_msg void OnBnClickedBtnStart()。 static CCUDPServerDlg *GetDialog()。 //發(fā)送數(shù)據(jù) void OnReceive(int nErrorCode)。//表示當(dāng)前用戶數(shù)量 Cuser userArray[userMaxNum]。 bool sameUser(Cuser user)。 //將退出的用戶從堆棧中移除 void UpdateUserInfo()。 strData)。 // 本地綁定 IP int m_LocatePort。 // 接收數(shù)據(jù)使用 void Split_CString( CStringamp。 dest, const CStringamp。//字符串分割使用的 CString findUser( CStringamp。 //根據(jù)用戶名查找該用戶的 ip 和端口信息 }。 //定義數(shù)據(jù)塊的大小 // 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對(duì)話框 class CAboutDlg : public CDialogEx { public: CAboutDlg()。 protected: virtual void DoDataExchange(CDataExchange* pDX)。 20 / 39 CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX)。 m_LocateIP = ntohl(i_addr())。 thisnumUser=0。 DDX_IPAddress(pDX, IDC_IPADDRESS, m_LocateIP)。 DDX_Text(pDX, IDC_Info, m_ReceiveData)。CCUDPServerDlg::OnBnClickedBtnStart) ON_BN_CLICKED(IDC_Btn_Cancle, amp。 // 將“關(guān)于 ...”菜單項(xiàng)添加到系統(tǒng)菜單中。 ASSERT((IDM_ABOUTBOX amp。 ASSERT(IDM_ABOUTBOX 0xF000)。 if (pSysMenu != NULL) { BOOL bNameValid。 bNameValid = (IDS_ABOUTBOX)。 if (!()) { pSysMenuAppendMenu(MF_SEPARATOR)。 } } // 設(shè)置此對(duì)話框的圖標(biāo)。 // 設(shè)置大圖標(biāo) SetIcon(m_hIcon, FALSE)。 // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE } void CCUDPServerDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID amp。 ()。 } } // 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼 // 來繪制該圖標(biāo)。 void CCUDPServerDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this)。 // 使圖標(biāo)在工作區(qū)矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON)。 CRect rect。rect)。 int y = (() cyIcon + 1) / 2。 } else { CDialogEx::OnPaint()。 HCURSOR CCUDPServerDlg::OnQueryDragIcon() { 23 / 39 return static_castHCURSOR(m_hIcon)。 //退出界面 } //開啟服務(wù)器 void CCUDPServerDlg::OnBnClickedBtnSt
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1