Foxtable(狐表)用户栏目专家坐堂 → 关于TCP Socket 端口监听 的问题


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

主题:关于TCP Socket 端口监听 的问题

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


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
关于TCP Socket 端口监听 的问题  发帖心情 Post By:2019/11/8 15:20:00 [只看该作者]

 老师

    我现在要弄个用 TCP Socke 交换数据. 参考之间的例子

图片点击可在新窗口打开查看http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=28230&skin=0
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=80110&authorid=0&page=0&star=2

全局代码中的例子,看的不是很懂 想通知客户端 发送指定数据到相关的端口,然后得到回应数据.

原来的客户代码是这样写的:  socket = New MyClient("127.0.0.1", 10086, basemainform)

这个返回的是个object . 要如何修改 全局代码 才能实现 socket = New MyClient("127.0.0.1", 10086, basemainform,msg,msg1)

 返回的是回应的信息. 我自己修改了一下,但还是不行,请老师指点一下: 例子的全局代码如下:



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


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/11/8 15:21:00 [只看该作者]

 Public socket As MyClient

Public Class MyClient
Private mainfrm As Object
Public receiveThread As System.Threading.Thread
Public nStream As System.Net.Sockets.NetworkStream
Public tcp As  System.Net.Sockets.TcpClient

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

If tcp Is Nothing Then
    MsgBox("无法连接服务器,请重试")
Else
    Dim netStream As System.Net.Sockets.NetworkStream = tcp.GetStream()
   
    Dim loginInfo As String = msg   '发送要求的数据
    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)
    If connResult> "" Then   '登录成功
        nStream = netStream
        receiveThread = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf ReceiveMsg))
        receiveThread.IsBackground=True
        receiveThread.Start()
    Else
        MsgBox("登录失败……")
        Return
    End If
End If
End Sub

''' <summary>
''' 接受消息的线程执行体
''' </summary>
Private Sub ReceiveMsg()
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
End Class
[此贴子已经被作者于2019/11/8 15:22:42编辑过]

 回到顶部