如何在服务器端获取阵列列表

时间:2014-11-20 10:33:32

标签: vb.net

我已经创建了客户端和服务器应用程序

我正在尝试将Arraylist从cilent发送到服务器 Arraylist是从客户端转移,但如何在服务器中使用该数组列表来获取ArrayList

的信息

当我在服务器端打印消息时,它显示System.collection.ArrayList

下面是我的代码

客户代码

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Try
        Client = New TcpClient("192.168.0.226", 8080)
        Dim Writer As New StreamWriter(Client.GetStream())

        detailList.Add(txtname.Text)
        detailList.Add(txtadd.Text)

        For Each i As String In detailList
            Console.WriteLine(i)
        Next

        Writer.Write(detailList)
        ' Writer.Write("</> " & txtaddress.Text & " <\>")

        MsgBox("datas send ")
        Writer.Flush()

    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

服务器代码

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    Dim message As String
    Dim nStart As Integer
    Dim nLast As Integer

    If listener.Pending = True Then
        message = ""
        cline = listener.AcceptTcpClient()
        Dim reder As New StreamReader(cline.GetStream)
        While reder.Peek > -1
            message &= Convert.ToChar(reder.Read()).ToString
        End While

        If message.Contains("</>") Then
            nStart = InStr(message, "</>") + 10
            nLast = InStr(message, "<\>")
            message = Mid(message, nStart, nLast)
        End If

        Console.WriteLine(message)

        txtname.Text = message
        Label1.Text = message
        '   saveData()
    End If
End Sub

Public Sub saveData()

    Dim cmd As SqlCommand
    sc.Open()
    cmd = New SqlCommand("insert into demo values('" + txtname.Text + "')", sc)
    cmd.ExecuteNonQuery()
    msg = MsgBox("data save")

    sc.Close()

End Sub

1 个答案:

答案 0 :(得分:1)

Button1_Click中的这一行:

Writer.Write(detailList)

您正在使用Write的重载版本Object。为了写出对Objects有意义的东西,.NET在内部调用了detailList的{​​{1}}方法。这里的ToString()方法是返回字符串“System.Collection.ArrayList”。

因此,您不是要向服务器发送实际的ToString()实现,而只是发送它的字符串表示(在其上调用ArrayList的结果)。

要通过TCP发送对象,您需要首先序列化,然后在服务器端反序列化。您可以使用任意数量的二进制,XML,JSON等格式化程序来执行此操作,也可以编写自己的格式。