zoukankan      html  css  js  c++  java
  • [VB] 简单的聊天程序

    来源:http://www.fenbi360.net/content.aspx?id=1100&t=ct

    下载地址:请到上面地址下载

          这是一个简单的聊天程序(VB6.0实现),它可以实现在局域网中两台主机间的在线聊天,程序很简单,只有短短的几十行,但“麻雀虽小,五脏俱全”,它已经有了聊天程序的大体框架。我们在它的基础上稍加改进,就能做出不错的聊天小软件呢。

    主打控件WINSOCK解析:

      作为这个CHAT程序的主打控件WINSOCKwinsock小图标,我们来看看它的一些常用属性、事件和方法。利用WinSock控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。与 Timer 控件类似,WinSock 控件在运行时是不可见的。

      它的主要用途有:

      1、创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。
      2、创建一个服务器应用程序,作为多个用户的数据的汇入点。
      3、创建“聊天”应用程序。

      WINSOCK的主要属性有:

    WINSOCK的主要属性  PROTOCOL(控制协议)属性,在这个例子中,我们将PROTOCOL属性设置为sckUDPProtocol。这个协议一般用于简单数据交换的情况,而如果我们要编写INTERNET应用程序,多采用TCP协议。
      属性RemoteHost是远程主机的地址,LocalPort、RemotePort分别本地主机的端口和远程主机端口,对客户来说,该属性指定发送数据的本地端口,而对于服务器来说,这是用于侦听的本地端口,我们在设置这两个属性时必须保证两台主机的端口值符合下面规则,即主机1的LocalPort等于主机2的RemotePort值,同样主机1的RemotePort等于主机2的LocalPort值,这样才能保证两机通讯的正常进行。
      LocalIP属性用于返回本地机器的 IP 地址,格式是 IP 地址加点的字符串 (xxx.xxx.xxx.xxx)。

      在本例中我们用到了以下几个WINSOCK的方法:
      在创建 UDP 应用程序时调用了 Bind 方法,这是必须的。Bind 方法的作用是为控件“保留”一个本地端口。例如,如果将控件绑定到1001 号端口,那么其它应用程序将不能使用该端口进行“监听”。该方法阻止其它应用程序使用同样的端口。
      SendData 方法用于发送一条数据给另一台主机,使用这个方法的语法是:        WinSock.SendData [要发送的数据]
      GetData 方法。当DataArrival事件出现时,代码调用 GetData 方法获取数据,并将数据存储在字符串变量中。使用语法是:WinSock.GetData [接收数据的变量]

      DataArrival事件:在本例中我们使用了DataArrival事件,DataArrival事件在当新数据到达时出现使用的语法为:object_DataArrival (bytesTotal As Long)        DataArrival 事件的语法包含下面部分: object 对象表达式,其值是“应用于”列表中的对象。 bytesTotal Long型 ,可获取的数据总数量。
      需要说明的是:如果没有获取一个 GetData 调用中的全部数据,则事件不会出现。只有存在新数据时才激活事件。可随时用 BytesReceived属性检查可用的数据量。

      这就是一个最简单的CHAT程序,你可以在它的基础上加以改进,做出更实用的CHAT小软件。

  • 相关阅读:
    牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
    6.3 省选模拟赛 Decompose 动态dp 树链剖分 set
    AtCoder Grand Contest 044 A Pay to Win 贪心
    5.29 省选模拟赛 树的染色 dp 最优性优化
    luogu P6097 子集卷积 FST FWT
    CF724C Ray Tracing 扩展欧几里得 平面展开
    5.30 省选模拟赛 方格操作 扫描线 特殊性质
    5.29 省选模拟赛 波波老师 SAM 线段树 单调队列 并查集
    Spring main方法中怎么调用Dao层和Service层的方法
    Bug -- WebService报错(两个类具有相同的 XML 类型名称 "{http://webService.com/}getPriceResponse"。请使用 @XmlType.name 和 @XmlType.namespace 为类分配不同的名称。)
  • 原文地址:https://www.cnblogs.com/hcbin/p/1709059.html
Copyright © 2011-2022 走看看