C# 同步客户端和服务器交互

C# 同步客户端和服务器交互,c#,networking,tcp,C#,Networking,Tcp,所以我制作了这个tcp程序,它只是在客户端和服务器之间发送和接收信息 我的设置如下所示: 1) 服务器开始侦听 2) 客户端发送“hello”命令以及用户名/密码 3) 服务器发送“正确传递”或“错误传递” 4) 客户端开始以50kb的间隔发送大量数据 5) 服务器接收并存储这些数据 我的问题是:我应该做些什么来确保客户端在服务器未侦听时不发送数据?例如,是否应该有一个从服务器发送的命令表明它成功地获取了数据?我只是想知道这一点,因为我不能让数据按顺序排列。 我通过tcp接收数据,我知道tcp应

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

我的设置如下所示:

1) 服务器开始侦听

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

3) 服务器发送“正确传递”或“错误传递”

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

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

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

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

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

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

谢谢


Rohit

首先,你需要做的是阅读已经发明的数据通信协议和标准。 包括OSI/ISO 这有助于您了解tcp和udp、http、rest等的级别。 了解为交互和通信设计的技术,如WCF。 但别忘了使用自定义协议,它为您提供了体验和演示数据通信如何工作以及为什么以及何时使用不同的协议和技术

要解决数据传输冲突,您可以使用Request/answer通信组织

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

Tcp有利于发送数据,避免数据损坏

我的问题是服务器在运行时可能没有读取 他被派去了


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

你使用的是什么框架?是WCF吗?是的,但我正在努力使它尽可能适合我,以便将它移植到不同的操作系统。我认为使用原始tcp流是最好的。商业同步程序也这样做吗?(使用请求/应答方法?)然后我将研究协议。谢谢谢谢,我想我现在会忽略它。