2012-05-15 143 views
0

因此,我正在制作这个简单地在客户端和服务器之间发送和接收信息的tcp程序。同步客户端和服务器交互

我的设置工作原理如下:

1)服务器开始监听

2)客户端发送 “你好” 的命令,以及用户名/密码

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

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

5)服务器接收并存储这哒TA当它来到

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

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

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

编辑: 我目前使用C#和的NetworkStream沟通

感谢,

罗希特

+0

你在使用什么框架?它是WCF吗? –

回答

0

首先认为你需要做的是阅读有关数据通信协议和standarts这就是已经发明的。 包括OSI/ISO http://en.wikipedia.org/wiki/OSI_model 这有助于您理解tcp和udp,http,rest等的级别。 了解有关用于WCF等交互和通信的技术。 但不要忘了玩你的自定义协议它给你的经验和表示数据通信如何工作,为什么和何时使用不同的协议和技术。

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

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

Tcp很好地发送数据,并从数据泄露保护。

+0

是的,但我试图让它尽可能适应我,以便将它移植到不同的os'es。我认为使用原始tcp流是最好的。商业同步程序是否也这样做? (使用请求/回答方法?) – rkrishnan2012

+0

然后我会查看协议。谢谢! – rkrishnan2012

0

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

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

+0

谢谢,我想我现在会忽略它。 – rkrishnan2012