以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于TCP Socket 端口监听 的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142903) |
-- 作者:ap9709130 -- 发布时间:2019/11/8 15:20:00 -- 关于TCP Socket 端口监听 的问题 老师 我现在要弄个用 TCP Socke 交换数据. 参考之间的例子 ![]() 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 -- 发布时间: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编辑过]
|