⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csdn_文档中心_用winsock实现聊天室的vc++程序设计.htm

📁 csdn10年中间经典帖子
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            <BR><BR>无连接协议的SOCKET编程模型 
            <BR><BR>====================================================== 
            <BR>一般在使用中,面向连接协议的SOCKET编程模型应用最为广泛,因 
            <BR>为面向连接协议提供了一系列的数据纠错功能,可以保证在网络上传输 <BR>的数据及时、无误地到达对方。 
            <BR>总的来说,使用SOCKET接口(面向连接或无连接)进行网络通信时, <BR>必须按下面简单的四步进行处理: 
            <BR>1、程序必须建立一个 SOCKET。 <BR>2、程序必须按要求配置此SOCKET。也就是说,程序要么将此 
            <BR>SOCKET连接到远方的主机上,要么给此SOCKET指定一个 <BR>本地协议端口。 
            <BR>3、程序必须按要求通过此SOCKET发送和接收数据。 <BR>4、程序必须关闭此SOCKET。 <BR>三:WINSOCK 
            API主要函数简介 <BR>作者利用WINSOCK API 编写了一个具有聊天室功能 <BR>的应用程序,可用作学习 WINSOCK 
            程序设计的参照。WINSOCK API 包 <BR>括很多函数,但其中最常用,包括在文章所附源程序中的有: 
            <BR>注:只是有关函数的简要说明,具体规则、说明请参见VC++帮助和 <BR>WINSOCK规范。 <BR>函数名 功能 说明 
            <BR><BR>WSAStartup() <BR>  <BR>连结应用程序与 Windows Sockets DLL 的第一个函数 
            <BR>  <BR>此函数是应用程序调用 Windows Sockets DLL函数中的第一个,也唯有此函数呼叫成功後,才可以再调用其他 
            Windows Sockets DLL 的函数。 <BR>WSACleanup() <BR>结束 Windows Sockets DLL 
            的使用 当应用程序不再需要使用 Windows Sockets DLL时,须调用此函数来注销使用,以便释放其占用的资源。 
            <BR>socket() 建立Socket 此函数用来建立一 Socket 描述字,并为此 Socket 建立其所使用的资源。 
            <BR>closesocket() 关闭某一Socket 此一函数是用来关闭某一 Socket <BR>bind() 
            将一本地地址与一个SOCKET描述字连接在一起 此函数在服务程序上使用,是调用监听函数listen()必须要调用的函数 
            <BR>listen() 设定 Socket 为监听状态,准备被连接 此函数在服务程序上使用,来设定 Socket 
            进入监听状态,并设定最多可有多少个在未真正完成连接前的客户端的连接要求。(目前最大值限制为 5, 最小值为1) <BR>  
            <BR><BR>accept() 接受某一Socket的连接要求,以完成面向连接的客户端 Socket 的连接请求 
            服务端应用程序调用此函数来接受客户端Socket 连接请求,accept() 函数的返回值为一新的 Socket,新 Socket 
            就可用来在服务端和客户端之间的信息传递接收,而原来 Socket 仍然可以接收其他客户端的连接要求. <BR>connect() 
            要求连接某一Socket到指定的网络上服务端 此函数用在客户端,用来向服务端要求建立连接。当连接建立完成後,客户端即可利用此 
            Socket 来与服务端进行信息传递。 <BR>recv() 从面向连接的 Socket 接收信息 此函数用来从面向连接的 Socket 
            接收信息 <BR>send() 使用面向连接的 Socket 发送信息 此函数用来从面向连接的 Socket 发送信息 
            <BR>WSAAsyncSelect() 要求某一 Socket 有事件 (event) 发生时通知使用者 此函数用来请求Windows 
            Sockets DLL 
            为窗口句柄发一条消息-无论它何时检测到由lEvent参数指明的网络事件。要发送的消息由wMsg参数标明.被通知的套接口由s标识。本函数自动将套接口设置为非阻塞模式。 
            <BR><BR><BR>lEvent参数由下表中列出的值组成 <BR><BR>FD_READ 欲接收读准备好的通知 
            <BR>FD_WRITE 欲接收写准备好的通知 <BR>FD_OOB 欲接收带边数据到达的通知 <BR>FD_ACCEPT 
            欲接收将要连接的通知 <BR>FD_CONNECT 欲接收已连接好的通知 <BR>FD_CLOSE 欲接收套接口关闭的通知 
            <BR><BR>这个函数可以认为是 WINSOCK API 中最为重要的 <BR>一个函数。要想使用好这个函数,你必须对 WINDOWS 
            编程的事件驱动 <BR>和消息传递有很清楚的了解。 <BR>四:聊天室应用程序的设计说明: <BR>软件功能: 
            <BR>Internet上可以提供一种叫IRC 的服务。使用者通过客户端的程序 
            <BR>登录到IRC服务器上,就可以与登录在同一IRC服务器上的客户进行交谈,这也就是平常 
            <BR>所说的聊天室。在这里,给出了一个在运行TCP/IP协议的网络上实现IRC服务的程序。 <BR>软件使用说明: 
            <BR>首先,在一台计算机上运行服务端程序,然后就可以在同一网络的 
            <BR>其他计算机上运行客户端程序,登录到服务器上,各个客户之间就可以聊天了。 <BR>软件设计要点: <BR>1、服务端 
            <BR>核心代码在 CServerViwe 类中,有一个 SOCKET 变量 <BR>m_hServerSocket 和 SOCKET 
            数组 m_aClientSocket[MAXClient](MAXClient: 
            <BR>所定义的接收连接客户的最大数目),m_hServerSocket 用来在指定的端口(&gt;1000) 
            <BR>进行侦听,如果有客户端请求连接,则在 m_aClientSocket 数组中查找一个空 socket, 
            <BR>将客户端的地址赋予此 socket。 <BR>每当一个 ClientSocket 接收到信息,都将会向窗口发一条消息。 
            <BR>程序接收到这个消息后,再把接收到的信息发送给每一个 ClientSocket。 <BR>2、客户端 
            <BR>客户端比较简单,核心代码在 CClientDlg 类中。只有一个 socket <BR>变量 
            m_hSocket,与服务端进行连接。连接建立好后,通过此 SOCKET 发送和接收信息。 
            <BR>为了简化设计,用户名在客户端控制,服务器端只进行简单的接收信 
            <BR>息和“广播”此信息,不进行名字校验,也就是说,可以有同名客户登录到服务端。这个 
            <BR>程序设计虽然简单,但是已经具备了聊天室的最基本的功能。 <BR>程序在VC++ 6.0 下编译通过,在使用 TCP/IP 协议的 
            WINDOWS 95/98 <BR>对等局域网和使用 TCP/IP 协议的 WINDOWS NT 局域网上运行良好。 
          <BR><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0 
width=770>
  <TBODY>
  <TR bgColor=#006699>
    <TD align=middle bgColor=#006699 id=white><FONT 
    color=#ffffff>对该文的评论</FONT></TD>
    <TD align=middle>
      <SCRIPT src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/readnum.htm"></SCRIPT>
    </TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/ico_pencil.gif" 
      width=16> </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; boybluesky <I>(2004-2-13 
      16:29:35)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>呵呵,废话连篇可能是学院派的特色。太空洞了。 
  <BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/ico_pencil.gif" 
      width=16> </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; badminton <I>(2001-7-2 
      10:08:59)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>andymei: 你好,能否送我一份源程序,非常感谢! 
      badminton@freemail.sx.cn <BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/ico_pencil.gif" 
      width=16> </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; Cloudyshadow <I>(2000-12-2 
      10:10:04)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>直接用控件好像解决不了阻塞的问题,还得用多线程 
  <BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/ico_pencil.gif" 
      width=16> </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; iwantfly <I>(2000-10-6 
      17:29:51)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 
      width=532><BR>太基础了吧,vb和delphi里面早就封装的好好的了用控件你可以在一天之内解决 
<BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/ico_pencil.gif" 
      width=16> </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; sodawater <I>(2000-9-12 
      16:47:36)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>太老套了吧!MSDN里面说的比这里详细多了 
  <BR></TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16 
      hspace=1 src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/ico_pencil.gif" 
      width=16> </SPAN>&nbsp;&nbsp;&nbsp;&nbsp; FBStudio <I>(2000-8-23 
      21:03:39)</I> </TD></TR>
  <TR>
    <TD bgColor=#ffffff colSpan=3 width=532><BR>呵呵,还是看看MSDN里的两个例子更好! 
  <BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1 
width=770>
  <TBODY>
  <TR>
    <TH bgColor=#006699 id=white><FONT 
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
  <TBODY>
  <TR>
    <TD>你没有登陆,无法发表评论。 请先<A 
      href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=419">登陆</A> 
      <A 
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>

<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
  <TBODY>
  <TR align=middle>
    <TD height=10 vAlign=bottom><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      border=0 height=48 
      src="CSDN_文档中心_用WINSOCK实现聊天室的VC++程序设计.files/biaoshi.gif" 
  width=40></A></TD></TR>
  <TR align=middle>
    <TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.net, Inc. All rights 
      reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD>
    <TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -