小弟在练习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
问题出在哪里,请大侠指点菜鸟。

解决方案 »

  1.   

    Private Sub Form_Load()
    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
      

  2.   

    没说什么样的错误
    你还是在局域网中实现,还是在单机上实现
    如果是单机,把RemoteHost改为:127.0.0.1(本机地址)
      

  3.   

    注意这个属性.Parent=1 恐怕是这里的问题
      

  4.   

    这个属性.parent=1是做什么用的?用在里面出现错误,说是无效的过程调用或参数。
      

  5.   

    这个代码我测试了一下没办法运行Private Sub Command1_Click()
    '发送用户输入的内容
    Winsock1.SendData Text1.Text
    Form2.ShowEnd Sub
    这就要出问题
      

  6.   


    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控件的熟悉
      

  7.   

    Private Sub Command1_Click()
    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就行了
      

  8.   

    多谢 zyg0(影子(努力应聘,做党的好孩子) 大侠的帮助,不过大侠改过的代码还是不可以用。是为什么呢?
      

  9.   

    我的控件名和你的一样,就是Winsock1.GetData rec, vbString出错,说“连接由远程端重新设置”。
    [email protected]多谢大哥指点。
      

  10.   

    您的邮件已经发送到: 保存
    地址: 
      
    [email protected] 
     
      

  11.   

    好象你没有指定自己的端口就绑定什么呀?
    我是这样设的:
    .LocalPort=8888
    .bind 8888
    其它的应该没有问题呀,我试过自己单机通讯,我的电脑在局域网中IP为"192.168.1.166",我把两个IP设为这个就行了