Hai, saya cukup baru dalam pemrograman NET. Saya harus mengembangkan aplikasi di mana klien perlu mengakses server melalui LAN, dan menerima data dari database MS ACCESS jarak jauh. Komunikasi berhasil dan server mengirimkan tabel data dalam format XML. Namun ketika klien menerima string dan mencoba mengubahnya menjadi XML dan mengisi datagridview, itu memberikan kesalahan
"Nilai heksadesimal 0x00 adalah karakter yang tidak valid"
Bantuan apa pun untuk menyelesaikan masalah ini akan dihargai. Saya menggunakan pengkodean ASCII dan pengkodean UTF-8 tetapi keduanya tidak berhasil.
Ini adalah klien yang mengirimkan permintaan
Dim client As New Net.Sockets.TcpClient
Dim stream As NetworkStream = Nothing
sql = "Select * from Roll "
client.Connect("127.0.0.1", 3000)
stream = client.GetStream
Dim sendbytes() As Byte = Encoding.ASCII.GetBytes(sql)
stream.Write(sendbytes, 0, sendbytes.Length)
Dan kemudian server menerimanya dan menjalankan query pada database dan mengirimkan datatable melalui koneksi LAN
client = server.AcceptTcpClient
stream = client.GetStream
Dim rvcBytes(client.ReceiveBufferSize) As Byte
stream.Read(rvcBytes, 0, client.ReceiveBufferSize)
Dim recive As String = Encoding.ASCII.GetString(rvcBytes)
Try 'lotNumberFrom & " and LotNumber " & lotNumberTo
cmd = New OleDbCommand(recive, con)
' MsgBox(recive)
ds.Clear()
adapter.SelectCommand = cmd
adapter.Fill(ds, "Batch data")
Dim writer As New System.IO.StringWriter
ds.Tables("Batch data").WriteXml(writer, True)
' MsgBox(writer.ToString)
Dim sendbytes() As Byte = Encoding.ASCII.GetBytes(writer.ToString)
stream.Write(sendbytes, 0, sendbytes.Length)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Kemudian klien menerimanya dan mencoba mengisi datagridview. Di situlah masalahnya terjadi.
Dim rvcBytes(client.ReceiveBufferSize) As Byte
stream.Read(rvcBytes, 0, client.ReceiveBufferSize)
Dim recive As String = Encoding.ASCII.GetString(rvcBytes)
Dim dsa As New DataSet
dsa.ReadXml(New XmlTextReader(New StringReader(recive)))
DataGridView1.DataSource = dsa.Tables(0)
client.Close()