




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档 1欢迎下载 I I 服务器 服务器 ServerDlg cpp implementation file include stdafx h include Server h include ServerDlg h ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE endif CAboutDlg dialog used for App About class CAboutDlg public CDialog public CAboutDlg protected DECLARE MESSAGE MAP CAboutDlg CAboutDlg CDialog CAboutDlg IDD void CAboutDlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX BEGIN MESSAGE MAP CAboutDlg CDialog END MESSAGE MAP 精品文档 2欢迎下载 CServerDlg dialog CServerDlg CServerDlg CWnd pParent NULL CDialog CServerDlg IDD pParent m hIcon AfxGetApp LoadIcon IDI ICONAPP void CServerDlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX DDX Control pDX IDC LIST USER m lbUser DDX Text pDX IDC EDIT DISPLAY m strDisplay BEGIN MESSAGE MAP CServerDlg CDialog ON WM SYSCOMMAND ON WM PAINT ON WM QUERYDRAGICON ON BN CLICKED IDC BN START OnBnStart ON BN CLICKED IDC BN CLOSE OnBnClose ON MESSAGE WM RECEIVE OnReceive ON MESSAGE WM CLIENTCLOSE OnClientClose ON MESSAGE WM ACCEPT OnAccept ON WM DESTROY END MESSAGE MAP CServerDlg message handlers BOOL CServerDlg OnInitDialog 精品文档 3欢迎下载 CDialog OnInitDialog ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu SetIcon m hIcon TRUE Set big icon SetIcon m hIcon FALSE Set small icon m iNetPort 3127 m Server Initialize this m bServer FALSE GetDlgItem IDC BN CLOSE EnableWindow FALSE return TRUE return TRUE unless you set the focus to a control void CServerDlg OnSysCommand UINT nID LPARAM lParam if nID dlgAbout DoModal else CDialog OnSysCommand nID lParam void CServerDlg OnPaint if IsIconic CPaintDC dc this device context for painting SendMessage WM ICONERASEBKGND WPARAM dc GetSafeHdc 0 int cxIcon GetSystemMetrics SM CXICON int cyIcon GetSystemMetrics SM CYICON CRect rect GetClientRect int x rect Width cxIcon 1 2 int y rect Height cyIcon 1 2 dc DrawIcon x y m hIcon else CDialog OnPaint HCURSOR CServerDlg OnQueryDragIcon 精品文档 5欢迎下载 return HCURSOR m hIcon void CServerDlg OnBnStart 创建套接字 m Server Create m iNetPort 开始监听 m Server Listen 显示 CString strInfo strInfo LoadString IDS CREATE SERVER ShowInDisplay strInfo m bServer TRUE GetDlgItem IDC BN START EnableWindow FALSE GetDlgItem IDC BN CLOSE EnableWindow TRUE void CServerDlg OnBnClose CloseServer GetDlgItem IDC BN START EnableWindow TRUE GetDlgItem IDC BN CLOSE EnableWindow FALSE void CServerDlg OnAccept 创建新客户 CMySocket pNewClient new CMySocket pNewClient Initialize this m Server Accept pNewClient 精品文档 6欢迎下载 放入链表中 m lsClient AddTail pNewClient void CServerDlg OnClientClose WPARAM wParam LPARAM lParam CMySocket p delClient CMySocket wParam 关闭该用户 p delClient ShutDown char buffer BUFFERSIZE while p delClient Receive buffer BUFFERSIZE 0 p delClient Close 在用户链表中删除该用户 POSITION psCur psList m lsClient GetHeadPosition CMySocket p curClient while psList NULL psCur psList p curClient CMySocket m lsClient GetNext psList if p delClient p curClient m lsClient RemoveAt psCur break 发送信息告诉其他用户该客户退出 CString strMsg strMsg LoadString IDS CLIENT CLOSE NETMESSAGE netMessage PTC CLIENT QUIT p delClient GetName T p delClient GetName strMsg 精品文档 7欢迎下载 SendToAllClient netMessage 界面上清理该用户信息 m lbUser DeleteString m lbUser FindString 1 p delClient GetName ShowInDisplay p delClient GetName strMsg 删除该用户 delete p delClient void CServerDlg OnReceive WPARAM wParam LPARAM lParam CMySocket p curClient CMySocket wParam NETMESSAGE netMessage p curClient Receive char switch netMessage type case PTC NEW 新客户加入 NewClientAdd p curClient break case PTC SAY 普通聊天 ShowMessage netMessage break 把加工过的信息发送给其他用户 SendToAllClient netMessage void CServerDlg CloseServer if m bServer return 精品文档 8欢迎下载 向所有客户发送服务端关闭的信息 CString strInfo strInfo LoadString IDS CLOSESERVER NETMESSAGE netMessage PTC SYSTEM T T strInfo SendToAllClient netMessage 服务端界面显示关闭信息 ShowInDisplay strInfo 关闭服务端 m Server Close 关闭客户端 char buffer BUFFERSIZE CMySocket m pClient POSITION psList m lsClient GetHeadPosition while psList NULL m pClient CMySocket m lsClient GetNext psList m pClient ShutDown while m pClient Receive buffer BUFFERSIZE 0 m pClient Close delete m pClient m lsClient RemoveAll m bServer FALSE 向所有户发出信息 void CServerDlg SendToAllClient const NETMESSAGE POSITION psList m lsClient GetHeadPosition 精品文档 9欢迎下载 while psList NULL m pClient CMySocket m lsClient GetNext psList m pClient SendMsg netMessage void CServerDlg ShowInDisplay CString str m strDisplay str r n UpdateData false void CServerDlg OnDestroy CDialog OnDestroy TODO Add your message handler code here 新用户加入 void CServerDlg NewClientAdd CMySocket p client NETMESSAGE netMessage 存入用户名字 p client SetName netMessage form 在列表框中显示该用户 m lbUser AddString p client GetName 发送用户列表给该客户 NETMESSAGE netMsg PTC USER LIST T T T int iListLen m lbUser GetCount CString strMsg for int index m lbUser GetTopIndex indexSendMsg netMsg 加工信息 strMsg LoadString IDS NEW CLIENT strMsg p client GetName strMsg strcpy netMessage data LPCTSTR strMsg 显示该用户进入 ShowInDisplay strMsg 显示普通消息 void CServerDlg ShowMessage NETMESSAGE netMessage CString strTo netMessage to if strTo T strTo 所有人 CString strForm netMessage form CString strMsg netMessage data CString strOut strForm 对 strTo 说 strMsg ShowInDisplay strOut IIII 客户端 客户端 ClientDlg cpp implementation file include stdafx h 精品文档 11欢迎下载 include Client h include ClientDlg h ifdef DEBUG define new DEBUG NEW undef THIS FILE static char THIS FILE FILE endif CAboutDlg dialog used for App About class CAboutDlg public CDialog public CAboutDlg enum IDD IDD ABOUTBOX protected virtual void DoDataExchange CDataExchange pDX DDX DDV support protected DECLARE MESSAGE MAP CAboutDlg CAboutDlg CDialog CAboutDlg IDD void CAboutDlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX BEGIN MESSAGE MAP CAboutDlg CDialog 精品文档 12欢迎下载 END MESSAGE MAP CClientDlg dialog CClientDlg CClientDlg CWnd pParent NULL CDialog CClientDlg IDD pParent m strDisplay T m strSend T m bWhispering FALSE m hIcon AfxGetApp LoadIcon IDR MAINFRAME void CClientDlg DoDataExchange CDataExchange pDX CDialog DoDataExchange pDX DDX Control pDX IDC LIST USER m lbUser DDX Text pDX IDC EDIT DIAPLAY m strDisplay DDX Text pDX IDC EDIT SEND m strSend DDX Check pDX IDC CHECK WHISPERING m bWhispering BEGIN MESSAGE MAP CClientDlg CDialog ON WM SYSCOMMAND ON WM PAINT ON WM QUERYDRAGICON ON BN CLICKED IDC BN CONNECT OnBnConnect ON BN CLICKED IDC BN CLOSE OnBnClose ON BN CLICKED IDC BN SEND OnBnSend ON MESSAGE WM RECEIVE OnReceive ON MESSAGE WM SOCKETCLOSE OnServerClose 精品文档 13欢迎下载 ON MESSAGE WM SEND OnSend ON MESSAGE WM CONNCET OnConnect ON LBN DBLCLK IDC LIST USER OnDblclkListUser END MESSAGE MAP CClientDlg message handlers BOOL CClientDlg OnInitDialog CDialog OnInitDialog ASSERT IDM ABOUTBOX ASSERT IDM ABOUTBOX AppendMenu MF SEPARATOR pSysMenu AppendMenu MF STRING IDM ABOUTBOX strAboutMenu SetIcon m hIcon TRUE Set big icon SetIcon m hIcon FALSE Set small icon 参数初始化 m Socket Initialize this 精品文档 14欢迎下载 m strNetIP T 127 0 0 1 m iNetPort 3127 m bConnect FALSE GetDlgItem IDC BN CLOSE EnableWindow FALSE GetDlgItem IDC BN SEND EnableWindow FALSE return TRUE return TRUE unless you set the focus to a control void CClientDlg OnSysCommand UINT nID LPARAM lParam if nID dlgAbout DoModal else CDialog OnSysCommand nID lParam void CClientDlg OnPaint if IsIconic CPaintDC dc this device context for painting SendMessage WM ICONERASEBKGND WPARAM dc GetSafeHdc 0 int cxIcon GetSystemMetrics SM CXICON int cyIcon GetSystemMetrics SM CYICON CRect rect 精品文档 15欢迎下载 GetClientRect int x rect Width cxIcon 1 2 int y rect Height cyIcon 1 2 dc DrawIcon x y m hIcon else CDialog OnPaint HCURSOR CClientDlg OnQueryDragIcon return HCURSOR m hIcon void CClientDlg OnBnConnect CString strConnectError 获取用户名字 CInputDlg inputDlg int iResult inputDlg DoModal if iResult IDCANCEL return m strName inputDlg m strName 创建套接字 if m Socket Create strConnectError LoadString IDS FAIL CREATE SOCKET ShowInDisplay strConnectError return 精品文档 16欢迎下载 CString strInfo strInfo LoadString IDS CONNECTING ShowInDisplay strInfo 连接服务器 if m Socket Connect m strNetIP m iNetPort int n m Socket GetLastError strConnectError LoadString IDS FAIL CONNECT ShowInDisplay strConnectError return strInfo LoadString IDS SUCCEED CONNECT ShowInDisplay strInfo m bConnect TRUE 发送自已的名字 NETMESSAGE netMessage PTC NEW m strName T T m Socket SendMsg netMessage GetDlgItem IDC BN CONNECT EnableWindow FALSE GetDlgItem IDC BN CLOSE EnableWindow TRUE GetDlgItem IDC BN SEND EnableWindow TRUE void CClientDlg OnBnClose if m bConnect m Socket Close m bConnect FALSE GetDlgItem IDC BN CONNECT EnableWindow TRUE GetDlgItem IDC BN CLOSE EnableWindow FALSE 精品文档 17欢迎下载 GetDlgItem IDC BN SEND EnableWindow FALSE m lbUser ResetContent CString strMsg strMsg LoadString IDS BREAK ShowInDisplay strMsg void CClientDlg OnBnSend OnSend m strSend T UpdateData FALSE void CClientDlg OnReceive NETMESSAGE netMessage m Socket Receive char CString strForm netMessage form 过滤自已发出的信息 if strForm m strName return CString strTo netMessage to CString strMsg netMessage data switch netMessage type case PTC USER LIST 用户列表 m lbUser AddString strMsg break case PTC NEW 新用户进入 m lbUser AddString strForm 精品文档 18欢迎下载 ShowInDisplay strMsg break case PTC SAY ShowMessage netMessage case PTC WHISPERING 密语 if strTo m strName return ShowMessage netMessage break case PTC CLIENT QUIT 有用户退出 m lbUser DeleteString m lbUser FindString 1 strForm ShowInDisplay strMsg break void CClientDlg OnServerClose if m bConnect return CString strMsg strMsg LoadString IDS SERVER CLOSE ShowInDisplay strMsg m Socket Close m bConnect FALSE GetDlgItem IDC BN CONNECT EnableWindow TRUE GetDlgItem IDC BN CLOSE EnableWindow FALSE GetDlgItem IDC BN SEND EnableWindow FALSE m lbUser ResetContent void CClientDlg OnSend 精品文档 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机车操作考试题及答案
- 2025医疗机构招标采购药品买卖合同范本
- 门诊服务考试题及答案
- 鄂州开学考试试卷及答案
- 安全局培训考试题及答案解析
- 全考点高压电工实操模拟测试题库附答案
- 安全技术基础 题库及答案解析
- (光纤通信)职业技能鉴定四级模拟练习题含答案
- 江苏建设网校安全员题库及答案解析
- 供应商评估及合同管理工具
- 中医基础理论9病机课件
- 《建筑工程测量》教学教案
- 2023年全国出版专业技术人员职业资格考试出版专业基础知识(中级)试题及参考答案
- 工程结构检测与加固-3-砌体结构检测与加固
- 《影视美学教学》课件
- 《工会固定资产管理办法》中华全国总工会办公厅印发
- 软件正版化培训课件
- 八年级科学上册水的浮力测试卷(含答案)
- 新生儿耳聋基因筛查与遗传咨询
- 经络美容中医美容
- 某化工厂拆除施工方案化工旧设备拆除施工方案
评论
0/150
提交评论