Foxtable(狐表)用户栏目专家坐堂 → [求助]TCP 连接


  共有2468人关注过本帖树形打印复制链接

主题:[求助]TCP 连接

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107301 积分:545766 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/25 14:07:00 [显示全部帖子]

看看:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=28230&skin=0

开2个监听
[此贴子已经被作者于2019/12/25 14:07:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107301 积分:545766 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/25 15:03:00 [显示全部帖子]

开两个客户端

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107301 积分:545766 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/26 8:19:00 [显示全部帖子]

必须要new两个Socket对象,但是可以绑定到同一个回调事件中

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107301 积分:545766 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/26 14:05:00 [显示全部帖子]

改改源码


    Public Sub New(ByVal ip As String, ByVal port As Integer, ByVal frm As Object)
        mainfrm = frm
        Dim server As IPAddress = IPAddress.Parse(ip)
        Dim tcp As New TcpClient()
        Try
            tcp.Connect(ip, port)
        Catch generatedExceptionName As Exception
            tcp = Nothing
        End Try

        If tcp Is Nothing Then
            MsgBox("无法连接服务器,请重试")
        Else
            Dim netStream As NetworkStream = tcp.GetStream()
            Dim loginInfo As String = System.Guid.NewGuid.ToString() & "|" & System.Net.Dns.GetHostName()   '唯一标识 和 机器码
            Dim stream() As Byte = Encoding.Unicode.GetBytes(loginInfo)
            netStream.Write(stream, 0, stream.Length)   '往服务器发送登录信息

            Dim buffer As Byte() = New Byte(50) {}
            netStream.Read(buffer, 0, buffer.Length)   '得到回发的信息

            Dim connResult As String = Encoding.Unicode.GetString(buffer).Substring(0, 2)
            If connResult.Equals("OK") Then   '登录成功
                nStream = netStream
                receiveThread = New Thread(New ParameterizedThreadStart(AddressOf ReceiveMsg))
                receiveThread.Start(某端口号如24)
            Else
                MsgBox("登录失败……")
                Return
            End If
        End If
    End Sub

    ''' <summary>
    ''' 接受消息的线程执行体
    ''' </summary>
    Private Sub ReceiveMsg(port As Integer)
msgbox(port)
        While True

            Dim packet As Byte() = New Byte(2) {}
            nStream.Read(packet, 0, packet.Length)
            Dim _cmd As String = String.Concat(packet(0), packet(1))

            Select Case _cmd
                '11状态,关闭客户端
                Case "11"
                    mainfrm.Close()
                    If receiveThread IsNot Nothing Then
                        receiveThread.Abort()
                    End If
                    nStream.Close()
            End Select
        End While
    End Sub

 回到顶部