【问题标题】:Sending multipe arrays to a "server" (C#)将多个数组发送到“服务器”(C#)
【发布时间】:2014-09-25 17:43:31
【问题描述】:

假设我有一个客户端和一个服务器。我想向服务器发送两个数组:

  1. 用户名(在本例中为“a”)
  2. 密码(在本例中为“b”)

我正在使用此代码发送到服务器:

stream.Write (userd, 0, userd.GetLength);
stream.Write (passd, 0, passd.GetLength);

服务器端是:

问题是我在服务器端得到的输出是“ab”用户和密码,因为我不能在密码字节和用户字节之间分开,因为它们都是在一个流中发送的(我得到了对吗?)。

我怎样才能正确地做到这一点? :O

【问题讨论】:

  • 如何使用固定宽度?
  • 我的知识还很基础。如果我的问题听起来很愚蠢,我很抱歉。

标签: c# tcpclient tcplistener


【解决方案1】:

这个问题有点宽泛,但在这里。不过,基本上,您有很多选择,您只需要选择一个并使用它即可。我的意思是,某些方法有利有弊,但你可以更容易地解决这些问题,而我无法猜测你这样做的目的。

如果你在做这样的事情,你会担心安全问题,但这远远超出了你的问题范围,所以我假设你已经解决了。

这些只是我脑海中的几个选项。

使用分隔符

如果您这样做,您将在服务器和客户端上拥有一个您知道的字符,并且可以保证永远不会出现在用户名中(或者如果需要,您可以转义)。例如,如果您选择了一个冒号,那么您将发送服务器:

username:password

服务器可以使用string.Split(':') 或等效的方法来计算参数。

使用固定宽度

再次,建立一个合同,但在这里你有一定数量的字符,用户名无论如何都会占用,并且永远不会超过。

username     password

然后您可以获取string.Substring(...) 来查找参数。

HTTP

这要复杂得多,但是 HTTP 请求的 Authorization 标头使用冒号分隔符,就像我最初提到的那样。如果你标准化为所有请求使用 HTTP,它可能看起来像这样,带有一点伪代码。

GET /path HTTP/1.1
Authorization: BASIC [base64(username:password)]

JSON/XML

JSON 和 XML 是用于发送和存储数据的格式。

JSON 看起来像这样:

{ "username" : "thisIsTheUsername", "password" : "password01" }

XML 看起来像这样:

<creds>
    <username>thisIsTheUsername</username>
    <password>password01</password>
</creds>

【讨论】:

  • @MrJack320 我希望这能回答你的问题,或者至少让你走上正确的道路。
【解决方案2】:

您可以将对象序列化为二进制并在服务器上发送流吗? 然后在服务器上将二进制流反序列化为对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多