0

所以我正在制作这个 tcp 程序,它只是在客户端和服务器之间发送和接收信息。

我的设置工作如下:

1)服务器开始监听

2)客户端发送“hello”命令以及用户名/密码

3)服务器发送“正确密码”或“错误密码”

4)客户端开始以50kb为间隔发送大量数据

5)服务器接收并存储这些数据

我的问题是:我应该做些什么来确保当服务器没有监听时客户端不发送数据?例如,是否应该从服务器发送一条命令说它已成功获取数据?我只是想知道这一点,因为我不能让数据不按顺序排列。

我通过 tcp 接收,我知道 TCP 应该将所有数据发送到服务器,但我的问题是服务器在发送给它时可能没有读取。

我的另一个问题是:TCP 是通过互联网发送大量小数据(加起来很多)的好协议吗?这是 Dropbox 和其他同步实用程序与其服务器通信的方式吗?

编辑:我目前正在使用 C# 和 networkstream 进行通信

谢谢,

罗希特

4

2 回答 2

0

首先认为您需要阅读已经发明的数据通信协议和标准。包括 OSI/ISO http://en.wikipedia.org/wiki/OSI_model 帮助您了解 tcp 和 udp、http、rest 等级别。了解为交互和通信设计的技术,如 WCF。但是不要忘记使用您的自定义协议,它可以让您体验和表示数据通信如何工作以及为什么以及何时使用不同的协议和技术。

要解决数据传输冲突,您可以使用请求/应答通信组织。

但是使用 WCF 服务,您可以轻松地进行数据传输。没有很多编码和错误。

Tcp 可以很好地发送数据并避免数据损坏。

于 2012-05-15T23:38:59.583 回答
0

我的问题是服务器在发送给它时可能没有读取。

您担心的问题实际上并不存在。如果服务器没有打开连接,您将获得“连接重置”。如果服务器的读取速度不如您写入的速度快,您的写入将在阻塞模式下阻塞,或者在非阻塞模式下返回重试指示。

于 2012-05-16T01:46:04.420 回答