首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

socket控件数组编程时,几个问题

2013-09-27 
socket控件数组编程时,几个小问题服务器端:一个名为LISTER1的SOCKET控件用来做服务器端的监听(端口号:6000

socket控件数组编程时,几个小问题
服务器端:一个名为LISTER1的SOCKET控件用来做服务器端的监听(端口号:6000),9个SOCKET控件组成名为SOCKETSERVER的数组,索引号从0-8 用来响应客户端的连接请求

问题是:
1、当一个连接请求到达时,比如SOCKETSERVER(0)接受了请求,请问建立了连接之后,(1)这个SOCKETSERVER(0)也分配端口号吗,(2)它的端口号必须是6000吗,还是随机分配

2、客户端 的 SOCKET控件 (1)分不分配端口 (2)如果分配,是不是随机分配。

3、服务器端与这个客户端的连接关系如何保存和维持,需不需要每隔多少秒进行一次通讯,类似于心跳包


[解决办法]
Winsock 控件
LocalPort 属性
返回或者设置所用到的本地端口。在设计时是可读/写的,而且是可用的。 

  对客户来说,该属性指定发送数据的本地端口。如果应用程序不需要特定端口,则指定 0 为端
口号。在这种情况下,控件将选择一个随机端口。在建立起连接之后,这就是用于 TCP 连接的本地
端口。
  对于服务器来说,这是用于侦听的本地端口。如果指定的是端口 0,就使用一个随机端口。在
调用了 Listen 方法后,属性就包含了已选定的实际端口。

语法: object.LocalPort = long
   object 所在处代表一个对象表达式,其值是“应用于”列表中的对象。
数据类型:Long

说明
  在计算机之间常用端口 0 来动态地建立连接。例如,一个客户希望服务器给他“回电话”,它
就可用端口 0 获得新的(随机)端口号,然后将该端口号交给远程计算机,从而达到目的。

[解决办法]
Winsock 控件
  Winsock 控件对用户来说是不可见的,它提供了访问 TCP 和 UDP 网络服务的方便途径。Microsoft Access、
Visual Basic、Visual C++ 或 Visual FoxPro 的开发人员都可使用它。为编写客户或服务器应用程序,不必了解
 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,
并且还可双向交换数据。

TCP 基础
  数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。
  如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦
听”的端口(RemotePort 属性),然后调用 Connect 方法。
  如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需
要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。
  建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生
 DataArrival 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。

UDP 基础
  用户数据文报协议 (UDP) 是一个无连接协议。跟 TCP 的操作不同,计算机并不建立连接。另外 UDP 应用程序
可以是客户机,也可以是服务器。
  为了传输数据,首先要设置客户计算机的 LocalPort 属性。然后,服务器计算机只需将 RemoteHost 设置为客
户计算机的 Internet 地址,并将 RemotePort 属性设置为跟客户计算机的 LocalPort 属性相同的端口,并调用
 SendData 方法来着手发送信息。于是,客户计算机使用 DataArrival 事件内的 GetData 方法来获取已发送的信息。

热点排行