在pb中用winsock控件使用问题
现在我只能实现一对一的连接,无法实现多台机的连接,
我查看了msdn的winsock属性、方法、事件,
其中有vb实现多个连接的方法, 以前unix下用标准c写过侦听端口,
可我还是不知道在pb中怎么实现
请各位朋友多多指教。
请问这个控件到底叫winsock还是叫winsck啊?怎么网上的文章里叫什么的都有呢?难道是两个东东吗?
另外还想请教你一个问题啊,用这个控件一对一的连接怎么连啊,我没有中文的介绍啊,谢谢啦!
pb中建立一对一的连接的方法很简单,比方说吧:
1、新建一个winsock的应用程序对象;
2、新建窗口server,在server中添加winsock控件ole_winsck;
3、新建窗口client,在client中也添加winsock控件ole_winsck;
4、在server和client的winsock控件的事件中填写代码:
在nectionrequest事件中写:
if ole_winsck.object.state<>0 then
ole_winsck.object.close()
end if
ole_winsck.object.accept(requestid)
messagebox("",string(requestid))
在dataarrival事件中写:
messagebox("提示","收到")
5、在server的open事件中写代码:
if isvalid(ole_winsck) = false then return -1
ii_localport=2001
//winsock通讯协议设为TCP协议
ole_winsck.object.protocol=0
//本地侦听的winsock通讯端口号
ole_winsck.object.localport=20001//
ole_winsck.object.listen()
6、在client的open事件中写代码:
if isvalid(ole_winsck) = false then return -1
//winsock通讯协议设为TCP协议
ole_winsck.object.protocol=0
//server的ip地址
ole_winsck.object.remotehost="132.113.64.202"
//server的winsock通讯端口号
ole_winsck.object.remoteport=20001
ole_winsck.object.connect()
6、在server的机上首先运行server窗口,进行侦听;
7、在client的机上运行client窗口进行连接;
如果想发送数据的话,就分别在两个窗口上添加一个send按钮,在send按钮的click事件中添加代码:
string as_data="好玩呀"
if ole_winsck.object.state = 7 then
ole_winsck.object.senddata(as_data)
MessageBox("提示","通知通信控制系统成功!",Information!)
return 1
else
MessageBox("警告","通知通信控制系统失败!",StopSign!)
return -1
end if
在SERVER 端收到一个accept()后,需打开一个
新的WINSOCK事件(即需调用新的WINSCOK控件)
成功后,该WINSCOK控件与CLIENT对话,原WINSCOK控件
继续进行监听,如果有新的连接要求,则产生
一个accept()后,又打开一个新的WINSOCK事件
这样,就实现一个SERVER 端对多个CLIENT对话,
也能实现CLIENT间对话(通过SERVER 端的转接)