求助:还是编码转换问题,网络
a11s 2004-09-10 10:55:56 我用MSDN提供的例子居然没有任何用处.不知道M$怎么想的
服务器:219.146.191.100 :6666 或者 6667
发出任意长度少于255 的字符串回得到服务器回复
问题是无法在客户端还原,所以请大家帮助
看看你们收到了什么回复.
我的代码就是这样的 发送Textbox1 收到 JU5=PEO":TextBox1
===============================================
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim iphost As IPHostEntry = Dns.Resolve("www.rzvnet.com")
'Dim aliases() As String = iphost.Aliases
Dim addr() As IPAddress = iphost.AddressList
'Dim ep As New IPEndPoint(addr(0), 6666)
Dim tcpc As New TcpClient
Connect(addr(0).ToString, TextBox1.Text)
End Sub
Sub Connect(ByVal server As [String], ByVal message As [String])
Try
' Create a TcpClient.
' Note, for this client to work you need to have a TcpServer
' connected to the same address as specified by the server, port
' combination.
Dim port As Int32 = 6666
Dim client As New TcpClient(server, port)
' Translate the passed message into ASCII and store it as a Byte array.
Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)
' Get a client stream for reading and writing.
' Stream stream = client.GetStream();
Dim stream As NetworkStream = client.GetStream()
' Send the message to the connected TcpServer.
stream.Write(data, 0, data.Length)
'Console.WriteLine("Sent: {0}", message)
' Receive the TcpServer.response.
' Buffer to store the response bytes.
data = New [Byte](256) {}
' String to store the response ASCII representation.
Dim responseData As [String] = [String].Empty
' Read the first batch of the TcpServer response bytes.
Dim bytes As Int32 = stream.Read(data, 0, data.Length)
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
TextBox2.Text = cv(responseData)
'TextBox2.Text = Encoding.GetEncoding("GB2312").GetString(Encoding.UTF8.GetBytes(responseData))
' Close everything.
client.Close()
Catch e As ArgumentNullException
Console.WriteLine("ArgumentNullException: {0}", e)
Catch e As SocketException
Console.WriteLine("SocketException: {0}", e)
End Try
'Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
'Console.Read()
End Sub 'Connect
Function cv(ByVal UnicodeString As String) As String
'Dim unicodeString As String = "This string contains the unicode character Pi(?"
'UnicodeString = "This string contains the unicode character Pi(?"
' Create two different encodings.
Dim ascii As Encoding = Encoding.ASCII
Dim [unicode] As Encoding = Encoding.Unicode
' Convert the string into a byte[].
Dim unicodeBytes As Byte() = [unicode].GetBytes(UnicodeString)
' Perform the conversion from one encoding to the other.
Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes)
' Convert the new byte[] into a char[] and then into a string.
' This is a slightly different approach to converting to illustrate
' the use of GetCharCount/GetChars.
Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
Dim asciiString As New String(asciiChars)
' Display the strings created before and after the conversion.
Return asciiString
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox(cv(TextBox2.Text))
End Sub