如何知道和区分tcp Connection发送的数据?

时间:2012-12-07 14:31:35

标签: vb.net

大家好我正在制作客户端 - 服务器软件,这是我的第一个问题  我想问:如何区分tcp Connection发送的数据?

嗯,我的观点是: - 我们可以确定由tcpconnection发送的数据。 例如,我们在表单中有3个Listviews 第一个listview的要点是客户端的 Biodata 。 第二个listview的点是*从客户端获得的值 n第三个列表视图的点是从客户端获取的图片

在这种情况下,我们有3个必须处理的要点。 事实上,我们的系统只有1个连接。

好吧,我在这里很困惑.. 如何确定我们收到的数据是针对第一个列表视图还是第二个列表视图或第三个列表视图? 记住,第三个listview的数据是我们从tcpconnection收到的图片

我们如何在系统中使用1个连接? 我必须建立3个连接才能控制第三个列表视图吗?

1 个答案:

答案 0 :(得分:0)

通过套接字通信,客户端和服务器必须使用相同的协议,以便他们可以相互理解。已经创建了许多标准协议,因此对于大多数任务,不需要创建自己的协议。但是,如果必须,您可以随时定义自己的协议。您的协议的性质显然完全取决于您的特定需求,因此无法告诉您协议应该是什么。但是,一般来说,协议必须首先定义的是如何知道每条完整消息的开始和结束位置。这通常通过用分隔符(例如,新行,EOF,null)分隔每个消息来实现。正如Francois所建议的那样,您也可以在每条消息的开头指定消息的长度。在每条消息中,您将需要一个标题部分,除其他外,它将指定存储在消息正文中的数据的类型(格式)。

一个简单的实现可能是将每条消息作为JSON或XML文档发送。这样做可以很容易地定义和修改消息的格式。

但是,除非您确实需要,否则我建议使用.NET提供的内置通信框架之一。对于简单的任务,通常一个简单的asmx Web服务就足够了。对于更复杂的任务,通常WCF是一个不错的选择。 asmx Web服务通过TCP / IP使用SOAP。 WCF使用SOAP,但是较低级别的连接是可配置的,因此它不必使用TCP / IP,但它可以轻松实现。