小弟在练习vb中的通讯,使用udp做一个聊天软件。不过总是出不来,搞了一个下午不知道为什么,各位大哥能否帮我看看。
第一个form上的代码如下:Private Sub Command1_Click()
'发送用户输入的内容
Winsock1.SendData Text1.Text
Form2.ShowEnd SubPrivate Sub Form_Load()
With Winsock1.RemoteHost = "172.26.19.174"
.RemotePort = 7777 '连接的端口号。
.Bind 8888
End WithEnd SubPrivate Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim rec As String'接收并显示
Winsock1.GetData rec, vbString
Text2.Text = recEnd SubPrivate Sub Winsock1_SendComplete()
Text1.Text = Text1.Text + " 发送完成"End Sub第二个form上的代码如下:Option ExplicitPrivate Sub Command1_Click()
'发送用户输入的内容
Winsock2.SendData Text1.Text
Form1.Show
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim rec As String'接收并显示
Winsock1.GetData rec, vbString
Text2.Text = recEnd SubPrivate Sub Form_Load()
With Winsock2
'重点:必须将 RemoteHost 的值
'修改为计算机的名字。
.RemoteHost = "172.26.19.174"
.RemotePort = 8888 '连接的端口号。
.Bind 7777
End WithEnd SubPrivate Sub Winsock2_SendComplete()
Text1.Text = Text1.Text + " 发送完成"End Sub
问题出在哪里,请大侠指点菜鸟。
第一个form上的代码如下:Private Sub Command1_Click()
'发送用户输入的内容
Winsock1.SendData Text1.Text
Form2.ShowEnd SubPrivate Sub Form_Load()
With Winsock1.RemoteHost = "172.26.19.174"
.RemotePort = 7777 '连接的端口号。
.Bind 8888
End WithEnd SubPrivate Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim rec As String'接收并显示
Winsock1.GetData rec, vbString
Text2.Text = recEnd SubPrivate Sub Winsock1_SendComplete()
Text1.Text = Text1.Text + " 发送完成"End Sub第二个form上的代码如下:Option ExplicitPrivate Sub Command1_Click()
'发送用户输入的内容
Winsock2.SendData Text1.Text
Form1.Show
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim rec As String'接收并显示
Winsock1.GetData rec, vbString
Text2.Text = recEnd SubPrivate Sub Form_Load()
With Winsock2
'重点:必须将 RemoteHost 的值
'修改为计算机的名字。
.RemoteHost = "172.26.19.174"
.RemotePort = 8888 '连接的端口号。
.Bind 7777
End WithEnd SubPrivate Sub Winsock2_SendComplete()
Text1.Text = Text1.Text + " 发送完成"End Sub
问题出在哪里,请大侠指点菜鸟。
With Winsock1
.Parent=1
.RemoteHost = "127.0.0.1"
.RemotePort = 7777 '连接的端口号。
.Bind 8888
End WithEnd Sub
Private Sub Form_Load()
With Winsock2
'重点:必须将 RemoteHost 的值
'修改为计算机的名字。
.Parent=1
.RemoteHost = "127.0.0.1"
.RemotePort = 8888 '连接的端口号。
.Bind 7777
End WithEnd Sub
你还是在局域网中实现,还是在单机上实现
如果是单机,把RemoteHost改为:127.0.0.1(本机地址)
'发送用户输入的内容
Winsock1.SendData Text1.Text
Form2.ShowEnd Sub
这就要出问题
Private Sub Command1_Click()
'发送用户输入的内容
Winsock1.SendData Text1.Text
Text1.Text = Text1.Text + " 发送完成"End SubPrivate Sub Form_Load()
With Winsock1
.Protocol = sckUDPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 7777 '连接的端口号。
.Bind 8888
End WithEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim rec As String'接收并显示
Winsock1.GetData rec, vbString
Text2.Text = recEnd Sub================================================================
Option ExplicitPrivate Sub Command1_Click()
'发送用户输入的内容
Winsock2.SendData Text1.Text
Text1.Text = Text1.Text + " 发送完成"
End SubPrivate Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim rec As String'接收并显示
Winsock2.GetData rec, vbString
Text2.Text = recEnd SubPrivate Sub Form_Load()
With Winsock2
'重点:必须将 RemoteHost 的值
'修改为计算机的名字。
.Protocol = sckUDPProtocol
.RemoteHost = "127.0.0.1"
.RemotePort = 8888 '连接的端口号。
.Bind 7777
End WithEnd Sub注意winsock控件的熟悉
Winsock1.SendData Txtsend.Text
End SubPrivate Sub Form_Load()
Dim my As String
Winsock1.Protocol = sckUDPProtocol '设置为udp协议
Winsock1.LocalPort = 10
Winsock1.RemotePort = 10
my = Winsock1.LocalIP '取得自己的IP地址
Winsock1.RemoteHost = my '这里应该是设置为别人的计算机的IP地址,由于自己是单机,所以就设置成自己给发消息End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim tep As String
Winsock1.GetData tmp, vbString
tmp = "对方位置" + Winsock1.RemoteHostIP + "发信内容为-->" + tmp
Txtmess.Text = tmp + Chr$(13) + Chr$(10) + Txtmess.Text
End Sub_______________________________________________________
********************************************************
这个是我刚才做的 在本机上运行莫得问题。要想和其他人聊天就把“my”换成其他的IP就行了
[email protected]多谢大哥指点。
地址:
[email protected]
我是这样设的:
.LocalPort=8888
.bind 8888
其它的应该没有问题呀,我试过自己单机通讯,我的电脑在局域网中IP为"192.168.1.166",我把两个IP设为这个就行了