有没有大佬们那么忙家庭咋办能帮下忙!在线等,额外增加爆伤冲突吗? 在线等

利用 WinSock 控件可以与远程计算机建立連接并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序与 Timer 控件类似,WinSock 控件茬运行时是不可见的

创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器

创建一个服务器应用程序,作为多个鼡户的数据的汇入点

创建“聊天”应用程序。

在使用 WinSock 控件时首先需要考虑使用什么协议。可以使用的协议包括 TCP 和 UDP两种协议之间的重偠区别在于它们的连接状态:

TCP 协议控件是基于连接的协议,可以将它同***系统相比在开始数据传输之前,用户必须先建立连接

UDP 协议昰一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机但是两者之间没有明确的连接。另外单次传输的最大数据量取决于具体的网络。

到底选择哪一种协议通常是由需要创建的应用程序决定的下面的几个问题将有助于选择適宜的协议:

在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息如果需要,使用 TCP 协议在收发数据之前先建立明確的连接。

数据量是否特别大(例如图象与声音文件)在连接建立之后,TCP 协议将维护连接并确保数据的完整性不过,这种连接需要更哆的计算资源因而是比较“昂贵”的。

数据发送是间歇的还是在一个会话内?例如如果应用程序在某个任务完成的时候需要通知某個计算机,UDP 协议是更适宜的UDP 协议适合发送少量的数据。

在设计时可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“協议”,然后选择 sckTCPProtocol 或者 sckUDPProtocol也可以使用程序代码来设置 Protocol 属性,如下所示:

在与远程计算机相连接的时候需要知道它的 IP 地址或者它的“好听嘚名字”。IP 地址是一串数字每三个数字为一组,中间用点隔开(形如 xxx.xxx.xxx.xxx)通常,最易记住的是计算机的“好听的名字”

要确定计算机嘚名字,请按照以下步骤执行:

在计算机的“任务栏”上单击“启动”。

在“设置”项中单击“控制面板”。

在“计算机名称”框中鈳以找到计算机的名称

上面找到的计算机名称可以作为 RemoteHost 属性的值。

如果应用程序要使用 TCP 协议那么首先必须决定应用程序是服务器还是愙户端。如果要创建一个服务器端那么应用程序需要“***”指定的端口。当客户端提出连接请求时服务器端能够接受请求并建立连接。在连接建立之后客户端与服务器端可以自由地互相通讯。

下列步骤创建一个非常简单的服务器:

要创建一个 TCP 服务器请按照以下步驟执行:

将缺省窗体的名称改为 frmServer。

将窗体的标题改为“TCP 服务器”

在窗体中放入一个 Winsock 控件,并将它的名字改为 tcpServer

为窗体添加如下的代码。

'檢查控件的 State 属性是否为关闭的

'在接受新的连接之前先关闭此连接。

'包含了要发送的数据当用户往文本框中

'为进入的数据声明一个变量。

上面的步骤创建了一个简单的服务器应用程序为了使它能够工作,还必须为它创建一个客户端的应用程序

要创建 TCP 客户端,请按照以丅步骤执行:

在工程中添加一个新的窗体将其命名为 frmClient。

将窗体的标题改为“TCP Client”

在窗体中添加如下的代码。

重点 必须将 RemoteHost 属性值修改为您嘚计算机的名字

'注意:要指定远程主机,可以使用

'计算机的“好听的名字”如下所示

'调用 Connect 方法,初始化连接

上面的代码创建了一个簡单的客户/服务器模式的应用程序。我们可以将两者都运行起来:运行工程然后单击“连接”。在两个窗体之一的 txtSendData 文本框中键入文本鈳以看到同样的文字将出现在另一个窗体的 txtOutput 文本框中。

上面设计的基本服务器只能接受一个连接请求通过创建控件数组,使用一个控件吔可以同时接受多个连接请求利用这种方法,不需要关闭连接而只需创建新的控件实例(通过设置其索引属性),然后在新的实例上調用 Accept 方法

下面的代码假定名为 sckServer 的窗体上有一个 Winsock 控件,它的 Index 属性被设置为 0;因此控件是控件数组的一部分在声明部分,声明了一个模块級的变量 intMax在窗体的 Load 事件中,intMax 被设置为 0数组中第一个控件的 LocalPort 属性被设置为 1001。然后调用控件的 Listen 方法使之成为“***”控件。在连接请求箌达时代码将检测 Index 是否为 0(“***”控件的值)。如果为 0***控件将增加 intMax 的值,并使用该号码来创建新的控件实例然后,使用新的控件实例接受连接请求

创建 UDP 应用程序比创建 TCP 应用程序还要简单,因为 UDP 协议不需要显式的连接在上面的 TCP 应用程序中,一个 Winsock 控件必须显式哋进行“***”另一个必须使用 Connect 方法初始化连接。

UDP 协议不需要显式的连接要在两个控件中间发送数据,需要完成以下的三步(在连接嘚双方):

将 RemoteHost 属性设置为另一台计算机的名称

调用 Bind 方法,指定使用的 LocalPort(下面将详细地讨论该方法。)

因为两台计算机的地位可以看成“平等的”这种应用程序也被称为点到点的。为了具体说明这个问题下面将创建一个“聊天”应用程序,两个人可以通过它进行实时嘚交谈

要创建一个 UDP 伙伴,请按照以下步骤执行:

将缺省的窗体的名称修改为 frmPeerA

将窗体的标题修改为“Peer A”。

在“属性”页上单击“协议”并将协议修改为 UDPProtocol。

为窗体增加如下的代码

'修改为计算机的名字。

'在键入文本时立即将其发送出去。

要创建第二个 UDP 伙伴请按照以下步骤执行:

在工程中添加一个标准窗体。

将窗体的名字修改为 frmPeerB

将窗体的标题修改为“Peer B”。

在“属性”页上单击“协议”并将协议修改為“UDPProtocol”。

在窗体中添加如下的代码

'在键入后立即发送文本。

如果要试用上面的例子按 F5 键运行工程,然后在两个窗体的 txtSend TextBox 中分别键入一些攵本键入的文字将出现在另一个窗体的 txtOutput TextBox 中。

在上面的代码中在创建 UDP 应用程序时调用了 Bind 方法,这是必须的Bind 方法的作用是为控件“保留”一个本地端口。例如如果将控件绑定到 1001 号端口,那么其它应用程序将不能使用该端口进行“***”该方法阻止其它应用程序使用同樣的端口。

Bind 方法的第二个参数是任选的如果计算机上存在多个网络适配器,可以用 LocalIP 参数来指定使用哪一个适配器如果忽略该参数,控件使用的将是计算机上“控制面板”设置中“网络”控制面板对话框中列出的第一个适配器

引号是用英文的单引号,

你有没有紦My_DB.ldf这个文件,放在C盘根目录下?

你对这个回答的评价是

参考资料

 

随机推荐