怎么实现 WINSOCK通信的 局域网调试呢?
各位大哥:
程序甲: (甲电脑IP = 192.168.0.209 )
remotehost = 192.168.0.234 remoteport =1200
Option Explicit
Private Sub Command1_Click()
Dim STR As String
STR = "XIEXIENI"
sckconnect.SendData STR
End Sub
Private Sub Command2_Click()
sckconnect.Connect sckconnect.RemoteHost, sckconnect.RemotePort
End Sub
程序乙: (乙电脑的IP =192.168.0.234 )
LocalPort = 1200
Option Explicit
Private Sub Form_Load()
sckserver(0).Bind sckserver(0).LocalPort '与本地端口绑定
sckserver(0).Listen
End Sub
Private Sub sckserver_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If sckserver.Count = 1 Then
Load sckserver(1)
sckserver(1).Accept requestID
End If
End Sub
Private Sub sckserver_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim sdata As String
sckserver(1).GetData sdata, vbString
End Sub
我所处的网络环境是局域网中,我所用的两台电脑是通过公司的代理服务器 上的网.
(乙电脑的IP =192.168.0.234 ) 程序甲: (甲电脑IP = 192.168.0.209 )
请问是我的程序有问题 还是在这中代理服务下 不能够进行通信调试呢?
谢谢!!!
问题点数:100、回复次数:11Top
1 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-08-19 08:30:30 得分 50
只要是局域网就可以。指定对ip就行
sckserver(0).Bind sckserver(0).LocalPort '与本地端口绑定
sckserver(0).Listen
其中 sckserver(0).Bind 多余,去掉,udp协议才用bindTop
2 楼jxfzy(剑心)回复于 2005-08-20 17:06:21 得分 10
其实和广域网是一样的都是通过ip地址来访问
没那么麻烦Top
3 楼mosangbike(莫桑比克)回复于 2005-08-20 20:44:35 得分 10
to zyg0(影子(成功减肥10斤,可给我饿坏了,我要补回来)
u wrong
tcp也需要bind,只不过vb中只默认第一个ip地址,自动替你绑定到这个ip了
如果一台电脑有N个IP地址,使用tcp就必须bindTop
4 楼Iris5(新思路)回复于 2005-08-22 13:48:51 得分 0
我有现成的源程序,需要请联系我!
Top
5 楼aguo2005(海纳百川 有容乃大 )回复于 2005-08-24 16:30:39 得分 0
我在两台机器上了 试了一下,,,乙机器不能收到信号...
请多多指教!!
Top
6 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-08-24 16:47:59 得分 0
先乙电脑运行 然后 甲电脑运行,试验下
Private Sub Form_Load()
sckserver(0).LocalPort=1200 '与本地端口绑定
sckserver(0).Listen
End Sub
Private Sub sckserver_ConnectionRequest(Index As Integer, ByVal requestID As Long)
'这个事件本身就是发送连接请求时候触发,不需要判断
Load sckserver(1)
sckserver(1).Accept requestID
End SubTop
7 楼fxy74(风笑语)回复于 2005-08-24 19:54:59 得分 10
Private Sub sckserver_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim sdata As String
sckserver(1).GetData sdata, vbString----sckserver(index).getdata sdata
End Sub
Top
8 楼chen1bin2(天涯浪子)回复于 2005-08-26 10:35:29 得分 0
一团糟Top
9 楼chen1bin2(天涯浪子)回复于 2005-08-26 10:41:05 得分 20
思路:
甲用tcp listen侦听
乙发连接请求
甲响应并判断是否是对应的客户端发出的请求
正确则发送正确指令到客户端,客户端显示连接成功
否则直接断线
这样就连接成功了
客户端传数据给服务端时直接SendData
服务端用GetData收
服务端也直接用SendData
客户端也是用GetData收
OK
在测试时先用单一的连接
成功后再测试数组连接
如果单一连接不成功说明网络中有阻碍
先解决网络问题再试Top
10 楼aguo2005(海纳百川 有容乃大 )回复于 2005-08-26 15:34:57 得分 0
VB中Winsock的UDP协议的例子;
甲机器程序:(甲机器IP =192.168.0.209)
Private Sub Form_Load()
With sckconnect
.RemoteHost = "192.168.0.202" '要连接到的计算机名
.RemotePort = 1200 '要连接到的端口号
.LocalPort = 1201 '该Winsock控制将要使用的本地端口号,便于其它端与该Winsock通讯
.Bind 1201 '将该Winsock控制绑定到该本地端口
End With
End Sub
Private Sub sckconnect_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
sckconnect.GetData strData, vbString
txtOutput.Text = strData
End Sub
Private Sub txtSend_Change()
sckconnect.SendData txtSend.Text '发送文本
End Sub
乙机器程序:(乙机器IP =192.168.0.202)
Private Sub Form_Load()
With sckserver
.RemoteHost = "192.168.0.209" '要连接到计算机的IP地址
.RemotePort = 1201 '要连接到的端口号
.LocalPort = 1200'该Winsock控制将使用的本地端口号,便于其它方与之通讯
.Bind 1200'将该Winsock控制绑定到该本地端口
End With
End Sub
Private Sub sckserver_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
sckserver.GetData strData, vbString
txtOutput.Text = strData
End Sub
Private Sub txtSend_Change()
sckserver.SendData txtSend.Text '发送文本
End Sub
先运行乙程序,再运行甲程序...在甲程序中txtSend 输入字符后 弹出错误消息:
实时错误:40006
所需事物或请求错误协议或连接状态.
帮我分析一下原因..... 解决后马上散分....!! 多谢!!
Top
11 楼zyg0(影子(被评为本年度最可爱流氓)回复于 2005-08-26 15:53:23 得分 0
这个必须2个程序都运行之后才能在甲中输入,这个是msdn中的例子程序,看帮助把朋友
,你看下你的winsock 控件属性是不是选择的udp,默认是tcpTop




