在pb中使用WINSOCK控件的方法

随着资源共享和实时通讯的需要,很多计算机应用程序早已甩开单兵作战的模式,转入联合行动。

  网络在计算机世界里,越来越发挥着举足轻重的作用。在WINDOWS应用程序中,处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件。许多资料都细述了WINSOCK在VB中的使用方法,就连WINDOWS本身提供的hlp文件也是针对VB而写的。笔者因为实际应用的需要,琢磨出了WINSOCK控件在PB中的应用方法。好东西不敢独自享用,拿出来与大家共享。

  下面以一个简单程序为例,说明WINSOCK控件在PB中的使用:

  一、在窗口中添加WINSOCK控件:

  在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出Insert object窗口,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗口上。

  在程序中该控件名称定为winsock_a(甲方)和winsock_b(乙方)。

  二、设置信息输入输出文本框:

  在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2,分别用于输入要发送的字符串和接受对方发送的字符串。

  三、设置通讯协议:

  WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。

  1.UDP协议设置:UDP协议是一种无连接的通讯协议,在通讯之前,需要绑定remotehost和remoteport属性,如果需要双向通讯,还要设置localport属性。

  在甲方(本机地址为:134.1.1.1)窗口的Open事件中加入如下语句:

winsock_a.object.protocol=1
//winsock通讯协议设为UDP协议
winsock_a.object.remotehost="134.1.1.2"
//对方的ip地址
winsock_a.object.remoteport=6000
//对方的winsock通讯端口号
winsock_a.object.localport=6001
//本机的winsock通讯端口号
winsock_a.object.bind
//绑定通讯协议

  在乙方(本机地址为:134.1.1.2)窗口的Open事件中加入如下语句:

winsock_b.object.protocol=1
//winsock通讯协议设为UDP协议
winsock_b.object.remotehost="134.1.1.1"
//对方的ip地址
winsock_b.object.remoteport=6001
//对方的winsock通讯端口号
winsock_b.object.localport=6000
//本机的winsock通讯端口号
winsock_b.object.bin
//绑定通讯协议

   2.TCP协议设置:TCP协议在通讯前需要进行连接。

  在甲方(作为服务器端)窗口的Open事件中加入如下语句:

winsock_a.object.protocol=0
//winsock通讯协议设为TCP协议
winsock_a.object.localport=6001
//本机的winsock通讯端口号
winsock_a.listen()
//启动监听

  在甲方winsock_a控件的Connectionrequest事件中加入如下语句:

//接受到对方的连接请求后
if winsock_a.object.state< >0 then
winsock_a.close()
end if
winsock_a.accept(requestID)
//建立直接连接
//requestID是Connectionrequest事件自己的参数

  在乙方(作为客户端)窗口的Open事件中加入如下语句:

winsock_b.object.protocol=0
//winsock通讯协议设为TCP协议
winsock_b.object.remotehost="134.1.1.2"
//对方的ip地址
winsock_b.object.remoteport=6000
//对方的winsock通讯端口号
winsock_b.connect() //发出连接请求

  3.无论采用哪种协议,都要在窗口的Close事件中加入如下语句:

if winsock_a/*或winsock_b*/.object.state< >0 then
winsock_a.close()
end if

   否则可能第二次使用时发生异常问题

  四、开始通讯

  在按钮cb_1(caption属性设为‘发送’)的click事件中加入如下语句:

winsock_a/*或winsock_b*/.object.send (sle_1.text)

  在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句:

//接受到对方数据后
string datastr1
winsock_a/*或winsock_b*/.object.getdata (def datastr1)
sle_2.text=datastr1 //将数据字符串显示在文本框中

   以上程序实际上体现了聊天器的底层工作原理,稍加修改扩充就可以做成一个很好的聊天软件。

时间: 2024-08-03 17:52:36

在pb中使用WINSOCK控件的方法的相关文章

WPF中引入WindowsForms控件的方法_C#教程

本文实例讲述了WPF中引入WindowsForms控件的方法.分享给大家供大家参考,具体如下: 环境: [1]WindowsXP with SP3 [2]VS2008 with SP1 正文: Step1:在现有工程中引入Windows Forms 鼠标右键[References]->选择[Add Reference]->[.NET]标签页 加入[WindowsFormsIntegration]和[System.Windows.Forms]两项 Step2:在XAML文件里加入 [S2-1]加

Android开发中自定义ProgressBar控件的方法示例

本文实例讲述了Android开发中自定义ProgressBar控件的方法.分享给大家供大家参考,具体如下: 很简单,首先加载Drawable,在onMeasure设置好其区域大小, 然后使用canvas.clipRect绘图 public class ProgressView extends ImageView { private Drawable maskDraw; /** * 加载的进度 0-100 */ private int mProcess = 20; public ProgressV

VC中添加web控件的方法

在VC中使用WebBrowser控件的两方法 黄森堂(vcmfc)著   ClassWizard方式:   1.创建包装类:View->ClassWizard->Add Class->Form a Type Library->C:\winnt\system32\shdocvw.dll->只选择IWebBrowserApp类->OK->OK 2.声明一个类变量:IWebBrowserApp m_internetexplorer;,并包含刚才的头文件(xxx.h) 3

我终于找到ASP中使用Office2000中的图表控件的方法!有兴趣的朋友进来看看!也请各位高手指点...

控件|图表|图表控件     前一阵为了做图表,查看了论坛中的所有文章,但大都是用Aspchart,ShortGraph等组件,这些组件多半都是国外开发要money的.如果你用office 的MS Chart,往往作出的效果又差强人意.如果你使用过Office2000中Excel的图表的话,应该被一流的效果所折服.想把他搬上你的网站吗?没问题,现在你也能通过ASP和VBScript来实现Microsoft Office Chart 9.0 的强大的功能和绝妙的效果.     示例中使用 ADO

实例讲解Android应用中自定义组合控件的方法_Android

自定义view大概可以分成: 继承view 组合view 自己画的view(用paint和canvas) 自定义viewgroup(widget) 最近又跟同学聊起来了,于是就准备自己实现一个imagebutton来练练手.(最简单的了)以及后面一个把imageview与textview结合使用的案例. ImageButton要实现ImageButton最容易想到的不就是把button和imageview合在一起么.嗯,人容易就想到这是一个组合自定义view.可是如何把一个image放到butt

你也可以YAI-VB5中Winsock控件的使用

前一段时间,一个名叫YAI的'病毒'在我国闹的沸沸扬扬,许多不明真相的人 对他感到神秘莫测,可是究其实质无非也就是一个远程控制软件罢了,只不过他的 服务器端程序隐藏的十分好而已.其实在VB5中有一个基于TCP\IP协议的Winsock控 件,利用他改改属性,写几段代码,我们同样可以来一回YAI. 由于篇幅所限,在这里我们只来看看对远程计算机的重启,关闭功能室如何实现 的.打开VB5后,在工具箱中并不能看到Winsock控件,通过鼠标右键单击工具箱点 "部件",再将"Micro

向DataGrid控件中添加ComboBox控件

combobox控件|datagrid|datagrid控件   在前面看到了很多关于怎样向DataGrid中添加ComboBox控件的方法.使用的方法全部都是在VB6.0中的方法. 我还是要说说在CSND中发贴的朋友. 现在所谓的.NET编程人员,不知道是怎么了呢!只是停留在使用.NET的编程环境中.并没有真正的了解面向对象的.NET编程思想. 我现在就利用继承DataGridColumnStyle完成向DataGrid中添加ComboBox. 希望这样有助于大家了解真正的面向对象编程的思想.

在ASP.NET中使用用户控件

asp.net|控件 [摘要]ASP.NET中提供的用户控件,可以解决ASP中无法解决的代码重用问题,更方便了调试工作中的错误检查.本文通过用户控件实现方法讲解和一个用户控件例程的实现,进一步验证了利用用户控件解决代码重用的可行性和有效性. [关键字]代码重用.用户控件.@Register指令 ASP.NET提供了比传统ASP更好的代码分离方案.在传统的ASP中,要将用Server. Execute执行的ASP文件或事务对象组件的代码分离开,一般只能将代码分离成几个文件,然后使用"include

在C++Builder中使用Delphi控件

Delphi的出现将一大批程序员带入了Windows下的可视化编程,为一些C&C++的死党程序员所羡慕.感叹.直到C++Builder的出现这些Programer才用到了梦寐以求的编程工具,也将一些不得已"投敌"到Delphi下的程序员又拉回到C++的怀抱.她正真将Windows下的可视化编程和面向对象编程语言有机的融合在一起.但是由于C++Builder面市时间较短固而可用的控件不多,而且控件的使用也只针对某一版本,相互之间的可互用性不好,除非你有SourceCode:对于D