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编辑过]