vc网络聊天软件_课程设计(编辑修改稿)内容摘要:
CMessg temp。 (*m_aSessionIn)。 m_dlgm_sMsgList+=+\r\n。 m_dlgm_tmpMsgList=+\r\n。 m_dlgSetDlgItemText(IDC_SHOWTEXT,m_dlgm_sMsgList)。 FILE* fp。 fp = fopen(,a+)。 fputs(m_dlgm_tmpMsgList,fp)。 fclose(fp)。 m_dlgSetDlgItemText(IDC_SHOWTEXT,m_dlgm_sMsgList)。 int linenum=((CEdit*) 21 (m_dlgGetDlgItem(IDC_SHOWTEXT)))GetLineCount()。 ((CEdit*) (m_dlgGetDlgItem(IDC_SHOWTEXT)))LineScroll(linenum)。 if(!m_dlgm_bClient) { for(POSITION pos=m_dlg()。 pos!=NULL。 ) { CClientSocket *t=(CClientSocket*) m_dlg(pos)。 if(tm_hSocket!=thism_hSocket) { tSendMessage(amp。 temp)。 } } } } while(!m_aSessionInIsBufferEmpty())。 } void CClientSocket::Init(CChatDlg *dlg) { m_sfSocketFile=new CSocketFile(this)。 m_aSessionIn=new CArchive(m_sfSocketFile,CArchive::load)。 m_aSessionOut=new CArchive(m_sfSocketFile,CArchive::store)。 m_bClose=false。 thism_dlg=dlg。 22 } /* *SendMessage()函数的实现 *主要功能: *将信息串行化 */ BOOL CClientSocket::SendMessage(CMessg *msg) { if(m_aSessionOut!=NULL) { msgSerialize(*m_aSessionOut)。 m_aSessionOutFlush()。 return TRUE。 } else { m_bClose=true。 //对方关闭了连接 CloseSocket()。 m_dlgCloseSessionSocket()。 return FALSE。 } } /* *CloseSocket()函数的实现 *主要功能: *关闭套接字的连接 23 */ void CClientSocket::CloseSocket() { if(m_aSessionIn) { delete m_aSessionIn。 m_aSessionIn=NULL。 } if(m_aSessionOut) { delete m_aSessionOut。 m_aSessionOut=NULL。 } if(m_sfSocketFile) { delete m_sfSocketFile。 m_sfSocketFile=NULL。 } Close()。 m_bInit=false。 m_bClose=true。 } /* *OnClose()函数的实现 *主要功能: *关闭套接字的连接 */ void CClientSocket::OnClose(int nErrorCode) { 24 m_bClose=true。 CloseSocket()。 m_dlgCloseSessionSocket()。 CSocket::OnClose(nErrorCode)。 } /* *GetLocalHostName()函数的实现 *主要功能: *获得本地计算机的名称 */ int CClientSocket::GetLocalHostName(CString amp。 sHostName) { char szHostName[256]。 int nRetCode。 nRetCode=gethostname(szHostName,sizeof(szHostName))。 if(nRetCode!=0) { //产生错误 sHostName=_T(没有取得 )。 return GetLastError()。 } sHostName=szHostName。 return 0。 } /* *GetIpAddress()函数的实现 *主要功能: *取得本地 IP 地址 */ int CClientSocket::GetIpAddress(const CString amp。 sHostName,CString 25 amp。 sIpAddress) //获得本地 IP { struct hostent FAR *lpHostEnt=gethostbyname(sHostName)。 if(lpHostEnt==NULL) { //产生错误 sIpAddress=_T()。 return GetLastError()。 } LPSTR lpAddr=lpHostEnth_addr_list[0]。 if(lpAddr) { struct in_addr inAddr。 memmove(amp。 inAddr,lpAddr,4)。 sIpAddress=i_ntoa(inAddr)。 //转换为标准格式 if(()) sIpAddress=_T(没有取得 )。 } return 0。 } /* * GetIpAddress ()函数的实现 *主要功能: *获得本地 IP 地址 */ int CClientSocket::GetIpAddress(const CString amp。 sHostName,BYTE amp。 f0, BYTE amp。 f1,BYTE amp。 f2,BYTE amp。 f3)//获得IP 地址 { 26 struct hostent FAR *lpHostEnt=gethostbyname(sHostName)。 if(lpHostEnt==NULL) { //产生错误 f0=f1=f2=f3=0。 return GetLastError()。 } LPSTR lpAddr=lpHostEnth_addr_list[0]。 //获取 IP if(lpAddr) { struct in_addr inAddr。 memmove(amp。 inAddr,lpAddr,4)。 f0=。 f1=。 f2=。 f3=。 } return 0。 } CString CClientSocket::ErrorReason(int tag) //错误信息的宏定义 { CString result。 switch(tag) { case WSANOTINITIALISED: result=A successful AfxSocketInit must occur before using this API.。 break。 27 case WSAENETDOWN: result=The work subsystem failed。 break。 case WSAEADDRINUSE: result=The specified address is already in use。 break。 case WSAEINPROGRESS: result=A blocking Windows Socket call is in progress。 break。 case WSAEADDRNOTAVAIL: result=The specified address is not available from the local machine。 break。 case WSAEAFNOSUPPORT: result=Address in the specified family cannot be used with this socket。 break。 case WSAECONNREFUSED: result=The attempt to connect eas rejected。 break。 case WSAEDESTADDRREQ: result=A destination address is requireed。 break。 case WSAEFAULT: result=The nSockAddrLen arguement is incorrect。 break。 case WSAEINVAL: result=Invalid host address。 break。 28 case WSAEISCONN: result=The socket is already connected。 break。 case WSAEMFILE: result=No more file descriptions are available。 break。 case WSAENETUNREACH: result=The work cannot be reached from this host at this time。 break。 case WSAENOBUFS: result=No buffer space is socket cannot be connected。 break。 case WSAENOTSOCK: result=The descriptor is not a socket。 break。 case WSAETIMEDOUT: result=Attempt to connect timed out without establishing a connection。 break。 case WSAEWOULDBLOCK: result=The socket is marked as nonblocking and the connnection cannot be pleted immediate。vc网络聊天软件_课程设计(编辑修改稿)
相关推荐
由于相关的其他领域的技术取得不断的发展,如半导体技术、集成技术和计算机技术等等,电子系统的设计方法和设计手段发生了很大的变化,使得 EDA 软件可以不断地更新和增加。 电子技术已经广泛应用到了 EDA 领域,各个学科之间的交叉越来越多,电子领域各学科应用更加广泛,使得 EDA 软件的功能更加强大,传统的固定功能集成块的设计方法正逐步地退出历史的舞台
北京广播电视大学昌平分校 数据 网络概述 (一) 北京广播电视大学现有网络结构 目前 ,北京 市广播电视大学校园网实现了千兆光纤接入 ,百兆交换到用户桌面 , 9 实现了电信、联通、教育科研网三网互融。 VOD 视频点播系统目前在我校校园网内网运行 ,主要是学员在机房集中上课时使用 ,其并发量相对不是很大 ,因此我校目前的网络状况完全能够满足该系统的运行需求 ,学生在浏览视频学习资料时
会议通过了 IMT20xx无线接口技术规范建议 , 其中我国提出的 TDSCDMA技术写在了第三代无线接口规范建议的 IMT20xx CDMA TDD部分中。 IMT20xx无线接口技术规范建议的通过表明 TG8/1制定第三代移动通信系统无线接口技术规范方面的工作已经基本完成。 第三代移动通信系 统的开发和应用将进入实质阶段 , 与此同时
言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。 通过这次实验使我收获很多,对书本理论知识有了进一步加深,初步掌握了MAXPLUSII 软件的一些设计使用方法。 对一些器件的使 用方法了解更深刻了,如一些器件的使能端的作用等。 主要有以下一些实验感想 应该对实验原理有深刻理解; 做实验必须不急不躁
Visual Basic 自动生成对象的程序代码并封装起来。 每个对象以图形方式显示在界面上,都是可视的。 结构化程序设计语言 Visual Basic 是在 BASIC 语言的基础上发展起来的,具有高级程序设计语言的语句结构,接近于自然语言和人类的逻辑思维方式。 Visual Basic 语句简单易懂,其编辑器支持彩色代码,可自动进行语法错误检查,同时具有功能强大且使用灵活的调试器和编译器。
系统 总体 功能 设计 实现 对 学生的基本信息管理 ① 能够 实现对学生基本信息进行添加、修改、删除、 查询 和打印等功能。 ② 能够 实现 对学生的教育经历信息的添加、修改、删除和查询 等功能。 ③ 能够按 学号 、姓名 等 对学生的 基本 信息进行检索并将检索结果显示在屏幕上。 ④ 要求有错误提示功能,例如性别只能输入男女,输入错误 则 提示重 新输入。 6 ⑤ 如果 查询