同步客户端和服务器交互

时间:2012-05-15 23:01:26

标签: c# networking tcp

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

我的设置如下:

1)服务器开始监听

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

3)服务器发送“correctpass”或“wrongpass”

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

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

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

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

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

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

谢谢,

罗希特夏尔

2 个答案:

答案 0 :(得分:0)

首先想到你需要做的就是阅读已经发明的数据通信协议和标准。 包括OSI / ISO http://en.wikipedia.org/wiki/OSI_model 这有助于您了解tcp和udp,http,rest等的级别。 了解为WCF等交互和通信而设计的技术。 但是不要忘记使用自定义协议,它可以为您提供数据通信工作的经验和表示,以及使用不同协议和技术的原因和时间。

要解决数据传输冲突问题,您可以使用reqest / answer组织进行通信。

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

Tcp很适合发送数据并从数据损坏中获取。

答案 1 :(得分:0)

  

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

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