主页
Top.Mail.Ru Yandeks.Metrika
论坛:“抢”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

向下

我有关于套接字的问题。 找到类似的分支


Fredericco   (2002-07-02 11:21) [0]

在工作中,我们创建一个由服务器和客户端组成的系统(像这样的60项目)。 客户端是与服务器通信而无需人为干预的程序。 服务器的操作很简单:它接受一个应用程序,即来自客户端的命令,确定它是谁以及向谁(我有自己的协议),它还发现这是一个命令,一个命令的答案或错误消息。 换句话说,服务器处理订单并通过技术渠道进行处理。 在一秒钟内,最大值不能超过20应用程序。 原则上,一切都很顺利,偶尔会发生衬里。 例如,当直接向两个客户端发送两条消息时,有时会向一个客户端发送一条双重消息。 这不是很可怕,但仍然,特别是因为系统正在增长,并且在未来我们将每秒获得40-50应用程序。 问题是,切换到流媒体服务器是否有意义,即将每个应用程序推送到您的流中,并让它不干扰任何人? 如果是这样,这将如何影响性能?
提前感谢!
Fredercco。



Digitman   (2002-07-02 14:59) [1]

什么是“流媒体服务器”?
什么是“将每个应用程序推送到您的流”?



Fredericco   (2002-07-02 15:24) [2]

2Digitman©(02.07.02 14:59)
TThread.Create



NailS   (2002-07-02 16:19) [3]


>每个应用程序都可以进入您的线程


我的朋友,这将是一种变态。
最好选择接收应用程序的流程,流程到应用程序类型的标识符,然后根据应用程序的类型,处理特定类型的应用程序的线程等。




Digitman   (2002-07-02 16:27) [4]

您的问题与单线程或多线程请求处理有何关系? 我没有看到任何连接......是的,并且没有它......如果你的服务器出现这样的错误,那么你作为服务器逻辑开发者的错误,以及它们将发生或不发生的线程 - 这无关紧要......组织并行计算需要代码流,仅此而已。



Malder   (2002-07-02 17:40) [5]

原则上,一切都很顺利,偶尔会发生衬里。 例如,当直接向两个客户端发送两条消息时,有时会向一个客户端发送一条双重消息。
也就是说,您向一个IP发送一条消息,向另一个IP发送第二条消息,并且双消息到达其中一个IP?
这并非一切都很好



Wizard_Ex   (2002-07-02 18:15) [6]

消息中指定的长度并在任何地方检查它

并且在服务器上处理消息,同时考虑接收的长度
如果合并了两个消息,则按长度处理
。 让我们说吧
## Length ## Your_Message ## Length ## Someone_Message

你取长度并在长度操作符之后处理这段长度的消息(如果我可以这么说),检查剩下的一块是否等于任何东西,如果不是空的,我们也处理,也就是说,有一个循环,这样服务器就不会吞下消息

这可能是这样的



Wizard_Ex   (2002-07-02 18:26) [7]

因为问题不在于此

//有时会向一个客户端发送一条双重消息。

但是服务器同时接收来自多个客户端的消息这一事实,因为它是一个数据,它已经发送到第一个(被寻址的消息首先发送到服务器),而第二个客户端的消息已经是预告片,但服务器再次将其视为一个一段数据,因为它几乎同时使用它们,

在第一个客户端的双重消息中,您可能会看到第二个使用您的协议的命令;-)
从根本上讲类似于扩展聊天

在修复逻辑之前,流程将完全相同



NailS   (2002-07-03 11:16) [8]

事实上,在我看来,问题是关于应用程序的体系结构;)。
所以,阅读可能会很有趣
www.softcraft.ru



Fredericco   (2002-07-03 12:18) [9]

2Malder©(02.07.02 17:40)
我在同一台机器上拥有所有客户端,=>它们都具有相同的IP。 这些客户端是硬件驱动程序 如果双重消息到达一个客户端,他将理解他自己并按预期执行,只有第二个客户端不会收到他的。
2Wizard_Ex©(02.07.02 18:26)
这正是发生的事情。 有时因为另一个。 例如,有两个设备。 2命令从它们传递到服务器。 服务器读取第一个和
Unit1.MyProcedure1;
然后第二和
Unit2.MyProcedure2;.
没关系 我的程序是共同的。
SendTextToHandle(句柄:整数; const文本:字符串); 开始 .... ServerSocket.Socket.Connections [i] .SendText(Text); .... 结束;
在我的1和2过程结束时,执行它们的结果是使用该过程发送一些命令。 SendTextToHandle。 在这里,有时客户端会收到第二条消息。 这并不可怕,它不会影响整个系统的运行,但这种事实的存在令人震惊。 此外,我检查:消息是单独收到的。



Digitman   (2002-07-03 13:09) [10]

>弗雷德里科


>我把所有客户都放在同一台机器上,=>他们都有一台
> IP
..

那是什么 提供商为您的主机分配了一个IP地址;有了它,您就可以悄悄地启动IE的十几个实例,十几个ICQ客户端,几个电子邮件客户端......但是同时在您的计算机上运行其他Internet应用程序! 他们工作 - 请注意 - 完全独立于彼此......不接触“外国”分组数据......同时 - 只需一个IP地址与提供商进行通信! 它并不会让你感到惊讶,因为它......但是当你自己的应用程序核心做同样的事情时,你会感到非常惊讶,但由于某些原因它是错误的....
结论是最简单的......



Fredericco   (2002-07-03 14:31) [11]

Digitman©(03.07.02 13:09)
当然,没有冒犯,但有一个结论表明了自己。 你是什​​么意思,而且只捕捉pokozyryat知识。 我知道你很好,我还有一年时间才能在你的智力之前去粪便,但如果你不想提出任何实际的建议,你会吃得快吗? 您继续进行的事实就是问题的答案
>也就是说,您将一条消息发送到一个IP,即第二条消息
>另一个IP,其中一个是双重消息
> IP?

见上面的Malder©(02.07.02 17:40)。
你知道什么不同于专业的delitant? 稳定 专业人士,即使在最简单的情况下,也不会放松,相反会更加专注,做出正确的决定。 让你在那里有上帝的插座,但如果你不能对这样一个简单的问题(甚至是一个愚蠢的问题)给出一个明确的答案,你真的是谁?



Страницы: 1 整个分支

论坛:“抢”;
当前存档:2002.07.29;
下载:[xml.tar.bz2];

楼上









内存:0.61 MB
时间:0.029 c
3-95234
Akhmadey
2002-07-08 21:04
2002.07.29
EhLib


3-95197
nitro313
2002-07-06 06:18
2002.07.29
启动数据库错误....


4-95595
Voland!
2002-05-21 02:16
2002.07.29
老鼠


3-95215
业余
2002-07-08 10:25
2002.07.29
再次过生日


3-95187
GSVMaster
2002-07-05 04:21
2002.07.29
请帮助数据库中的开发人员!





南非荷兰语 阿尔巴尼亚人 阿拉伯语 亚美尼亚 阿塞拜疆 巴斯克 白俄罗斯 保加利亚语 加泰罗尼亚 简体中文 中国(繁体) 克罗地亚 捷克 丹麦语 荷兰人 英语 爱沙尼亚语 菲律宾人 芬兰 法文
加利亚西语 格鲁吉亚语 德语 希腊语 海地克里奥尔语 希伯来语 印地语 匈牙利 北日耳曼语 印度尼西亚人 爱尔兰语 意大利语 日本性玩偶 韩语 拉脱维亚 立陶宛 马其顿 马来语 马耳他语 挪威语
波斯语 波兰语 葡萄牙语 罗马尼亚 俄语 塞尔维亚 斯洛伐克 斯洛文尼亚 西班牙语 斯瓦希里 瑞典语 泰国人 土耳其 乌克兰 乌尔都语 越南人 威尔士语 意第绪语 孟加拉 波斯尼亚
宿务 世界语 古吉拉特语 豪萨语 苗族 伊博 爪哇 卡纳达语 高棉 老挝 拉丁语 毛利 马拉 蒙古人 尼泊尔 旁遮普 索马里 泰米尔人 泰卢固语 约鲁巴语
祖鲁
英文 Французский Немецкий Итальянский Португальский 俄文 Испанский