在VFP下实现点对点通信的基本方法

在VFP下实现点对点通信的基本方法,第1张

在VFP下实现点对点通信的基本方法,第2张

但是在VFP用Winsock控件进行网络编程的资料很少,尤其是在VFP用这个控件传输非文本文件,这是一个很大的问题:VFP没有二进制变量的定义。经过长时间的探索,笔者掌握了一些这方面的编程经验,现总结出来与广大VFP爱好者共同探讨:

首先,编程基础

因为关于Winsock控件的资料在很多媒体上都有介绍,为了节省篇幅我就不详细介绍了。请查找相关信息。这里我只简单说一下要用到的一些设置。为了保证通信的可靠性,下面的程序使用了TCP/IP协议,客户端和服务器端都使用了预设的1001端口(实际操作中可以自己更改)。

二、界面设计

1.客户端:接口中有7个对象,属性Name=TcpClient,RemoteHostport=1001。其余属性可以根据需要自行设置,其余对象的设置也可以自行设置。

2.Server:有五个对象,属性Name=TcpServer,LocalHostport=1001。该属性必须与客户端的远程主机端口一致,其余属性可以根据需要自行设置,以及其他对象的设置。

第三,实现代码

1.客户

■初始化事件的形式:

公共strDatastrData = " "

this form . TCP client . remote host = " 192 . 41 . 242 . 18 "

this form . TCP client . remote port = 1001

■“连接”按钮。点击事件

this form . TCP client . object . connect(" 192 . 41 . 242 . 18 ",1001)

这个。启用= .f。

■TCP客户端。数据到达事件

*** ActiveX控件事件***LPARAMETERS

bytestotalthisform . TCP client . object . get data(@ strData)

this form . txtoutput 1 . value = strData

■TxtSend1。InteractiveChange事件

this form . TCP client . object . send data(this。值)

2.服务器端

■初始化事件的形式:

公共strDatastrData = " "

这个表格。TCP server . object . local port = 1001此表单。TCP server . object . listen■TCP server . connection request事件

*** ActiveX控件事件***

LPARAMETERS requestID

如果this form . TCP server . object . state为0

this form . TCP server . object . close

如果…就会结束

this form . TCP server . object . accept(request id)

常量值描述

Sckclosed 0关闭(默认)

Sckopen 1打开

听力2

Sckconnected 7已连接。

Sckerror 9的姓不对。

■TcpServer。数据到达事件

*** ActiveX控件事件***

LPARAMETERS bytestotal

this form . TCP client . object . get data(@ strData)

this form . txtoutput 1 . value = strData

■TxtSendData。InteractiveChange事件

this form . TCP server . object . send data(this。值)

现在我们可以运行它,看看它是如何工作的,要么在同一台机器上,要么在局域网上。注意

一定要在Winsock对象代码中加入VFP的关键字对象,否则不可能成功(我也是经过无数次失败才得到答案的)。

四。扩张和其他

我们用Winsock控件简单实现了点对点通信程序。界面比较简单,功能也比较少,读者可以进行相应的扩展。我来说说文件传输。

在上面的程序中,已经实现了实时的点对点通信,但是要用这个来进行文件传输,还有一个很大的问题需要解决。因为VFP没有提供二进制变量的定义,为了将文件传输到,必须解决ASCII码大于128的字符传输问题。但是,在6.0版中,提供了filetostr()和strtofile()文件与内存变量之间的转换函数。但在具体操作中,我发现使用这两个函数只能传输不超过8K字节的文件,而且要求是文本类型。因此,我们不能采用这种解决方案。好在VFP6.0提供了两个非常有用的字节处理函数,bintoc()和ctobin(),其中bintoc()函数将长整型数据转换为对应的4字节字符(默认值,可以更改),而ctobin()函数则相反。有关详细信息,请参考VFP帮助。这样,我们就可以利用这两个函数来传输文件了。有了以上基础,应该就知道怎么写代码了(只需要给Winsock对象的DataArrive事件加一些代码就可以了),就不赘述了。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 在VFP下实现点对点通信的基本方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情