视听在线 图片中心 职教博客 职教论坛 信息查询 网络办公 同学录 免费邮箱

栏 目 导 航

科教专题
创作常识
教育论文
学科研究
科教成果
文书范本
师生风采
现代远教
校园文学
朝阳文学社
青春寄语
人文素材
精典论述
散文欣赏
缤纷诗语
精品小说
笑破肚皮
学习培训
课堂教学
信息技术
等级考试
升学考试
教师技能
试题中心
教案课件

 

网 站 统 计
学校概况:89 篇学校概况
新闻中心:206 个新闻
教学教研:453 篇教学教研
德育工作:87 个德育
视听在线:125 篇视听节目
图片:93 张图片
下载:95 个下载
注册会员:10110位
最 新 调 查
 没有任何调查

 

 

您现在的位置: 南江县职中(三中) >> 教学教研 >> 学习培训 >> 信息技术 >> 程序设计 >> VFP数据库 >> 教学教研正文
 搜索

高级搜索

  • 上一篇教学教研:
  • 下一篇教学教研: 没有了
  • 在VFP下实现点对点通信的基本方法

    作者:caihz    教学教研来源:本站原创    点击数:    更新时间:2007-12-12

    用Winsock控件在VFP中进行网络编程的资料却非常少,尤其是利用此控件在VFP中进行非文本文件的传输,更是一大难题:VFP中没有二进制类型的变量定义。笔者经过长时间的摸索,掌握了一些有关这方面的编程经验,现加以总结,以便和广大的VFP爱好者共同探讨:

    一、编程基础

    因为有关Winsock控件的资料在很多媒体上都有相关介绍,因此为了节省篇幅,我就不再作具体介绍,请大家查找一下有关资料即可,这里我只简单说一下要用到的一些设置。为了保证通讯的可靠性,在下面的程序中使用的是TCP/IP协议,并且在客户端和服务端均采用预设端口1001(大家在实践时可以自行更改)。

    二、界面设计

    1.客户端


    客户端

    在上面的界面中共有7个对象,属性Name=TcpClient,RemoteHostport=1001,其余属性可根据需要自行设置,其余对象的设置也可自行设置。

    2.服务端


    服务器端

    在上面的界面中共有5个对象,属性Name=TcpServer,LocalHostport=1001,此属性务必和客户端的远程主机端口一致,其余属性可根据需要自行设置,其余对象的设置也可自行设置。

    三、实现代码

    1.客户端

    ■表单的 Init 事件:

    public strDatastrData = ""
      thisform.tcpClient.RemoteHost = "192.41.242.18"
      thisform.tcpClient.RemotePort = 1001

    ■"连接"按钮.Click 事件

    thisform.tcpClient.object.Connect("192.41.242.18",1001)
      this.Enabled = .f.

    ■TcpClient.DataArrive 事件

    *** ActiveX Control Event ***LPARAMETERS
      bytestotalthisform.tcpClient.Object.GetData(@strData)
      thisform.txtOutput1.Value = strData

    ■TxtSend1.InteractiveChange 事件

    thisform.tcpClient.Object.SendData(this.Value)

    2.服务端

    ■表单的 Init 事件:

    public strDatastrData = ""
      thisform.tcpServer.Object.LocalPort = 1001thisform.tcpServer.Object.Listen

    ■TcpServer.ConnectionRequest 事件

    *** ActiveX Control Event ***
      LPARAMETERS requestID
      If thisform.tcpServer.OBJECT.State <> 0
       thisform.tcpServer.OBJECT.Close
      end if
      thisform.tcpServer.OBJECT.Accept(requestID)

    常数 说明
    sckClosed 0 关闭(默认)
    sckOpen 1 打开
    sckListening 2 侦听
    sckConnected 7 已连接
    sckError 9 发生了错误

    ■TcpServer.DataArrive 事件

    *** ActiveX Control Event ***
      LPARAMETERS bytestotal
      thisform.tcpClient.Object.GetData(@strData)
      thisform.txtOutput1.Value = strData

    ■TxtSendData.InteractiveChange 事件

    thisform.tcpServer.Object.SendData(this.Value)

    现在我们就可以运行了,看看怎么样,既可以在同一台机器上运行,也可以在局域网上运行。 注意
    一定要在Winsock对象代码中加入VFP的关键字OBJECT,否则是不可能成功的(我也是在无数次失败后才得到的答案)。

    四、扩展及其它

    以上我们简单实现了使用Winsock控件的点对点通信程序,界面比较简单,功能也相对较少,读者可据此进行扩充。下面我再说说有关文件传输的问题。

    在上面的程序中,已经能够进行实时点对点通信,但要用此进行文件传输,还有一大难题需要解决。因为VFP并不提供二进制类型的变量定义,因此要向进行文件的传输,必须解决ASCII码大于128的字符传送问题。不过在VFP6.0版本中,提供了filetostr()和strtofile()文件与内存变量的转换函数,不过在具体的运行中,我发现利用这两个函数只能传送不大于8K字节的文件,并且要求是文本类型才可以。因此,我们不能采用此中解决办法,还好,VFP6.0提供了二个非常有用的字节处理函数bintoc()和ctobin(),其中bintoc()函数是将长整型数据转换为相应的4个字节字符(默认值,可改动),ctobin()函数则相反,有关的详细资料请参阅VFP帮助。这样我们就可以利用这两个函数来进行文件的传输了。有了上面的基础,想必该怎么编写代码你也该会了(只需在Winsock对象的DataArrive事件中加入一些代码即可)。

    教学教研录入:CaiHZ    责任编辑:CaiHZ 
    发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
  • 上一篇教学教研:
  • 下一篇教学教研: 没有了
  •  

    设为首页加入收藏联系站长友情链接版权申明关于我们

    本站版权所有:四川省南江县职业中学(南江三中)[C2004-2006] 【蜀ICP备05026437号】
    地址:四川省南江县南江镇光雾山大道香山路66号,电话:0827-8280443 EMail:scnjsz@126.com,传真:08278281138
    本站设计:蔡怀周,QQ:372051855   校友QQ群:11428533 7289410 18990001

    最佳浏览设置:1024×768、16位真彩色以上