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

向下

如何做到最好 找到类似的分支


Eraser   (2002-02-12 13:01) [0]

这样的任务:有许多客户端(大约10个),来自客户端的数据通过套接字传输。 我应该为每个客户端做些什么来分配我的ServerSocket,或者可能全部通过一个?
还有另一个问题:我们有MBE-RAS(专线专用的远程访问服务器),因此,如果我(物理地)撕裂了通往RAS的电话线,他们将看不到服务器已断开并且连接仍像以前一样工作???



Ghost.   (2002-02-12 13:05) [1]

您可以一口气完成所有工作……但是您真的要解释一下您需要做什么以及它们在哪里通过此套接字吗?



Eraser   (2002-02-12 13:58) [2]

将ClientSoCket连接到服务器程序并将数据发送到位于办公室网络中计算机上另一个程序中的ServerSocket的几个应用程序,客户端通过调制解调器连接到RAS,然后网络进入办公室网络。 RAS速度为19600波特,数据量正常。
所以问题是如何使它变得更好:1 ClientSocket-1 ServerSocket或
<<很多>> ClientSocket-1 ServerSocket ???



Ghost.   (2002-02-12 14:17) [3]

Che生产它们,那么您必须为每个人打开端口..想象一下您打开它们的数量..当然是一台服务器和许多客户端..出于这些目的,最好采用ICS(观点是主观的),因为它们更可靠,并且在示例中有非常好的多线程伺服器



Digitman (M)   (2002-02-12 14:36) [4]

>橡皮
这就是为什么他和TServerSocket“同时”为多个客户端提供服务的原因。 得出结论。



Eraser   (2002-02-12 16:21) [5]

好吧,比方说,如果立即有来自5个客户的信息,他本人将把所有这些正确地放入队列中?
对我来说,为每个客户端创建一个流还是一次接收一个流更好?



Ghost.   (2002-02-12 16:30) [6]

如果您不听别人说为什么,那么每个人都已经向您解释了这些问题..一切都会正确的



Digitman (M)   (2002-02-13 08:25) [7]

>橡皮
TServerSocket不会处理客户端消息队列的组织,而是由套接字本身(由Winsock核心在与客户端成功连接后创建)创建。 TServerSocket只是封装了其中几个套接字的控制功能(通过活动连接数+ 1),将它们配置为以块/非块方式工作。 模式,询问其状态,读取其接收缓冲区并写入其发送缓冲区。 所以-有多少个TServerClientWinSocket对象为活动连接创建了TServerSocket控件对象,所以将有许多独立的“队列”



Eraser   (2002-02-13 11:39) [8]

套接字随机连接。 有一个东西(我读过)ServerSocket.Connectios [0] .Data-例如有关特定连接的所有数据都写在这里(也就是说,您可以识别客户端),但是仅用两个字就找不到关于如何使用此东西的详细信息。 不要告诉我在哪里?
通常来说,这么变态是不值得的,但是在与客户建立联系之后,就立即发送一些数字组合来谈论他的归属?



Ghost.   (2002-02-13 11:42) [9]

听着,别上当了。有很多ICS组件,还有非常清楚的多线程服务器示例。



Digitman (M)   (2002-02-13 12:35) [10]

>>“任意连接插座”
绝对错误。

>> ServerSocket.Connectios [0] .Data-就像所有内容都写在那里
>>具体的连接数据

TCustomWinSocket.Data只是一个指针。 它与套接字作为对象无关。 您可以随意随意设置此指针的值。 TCustomWinSocket对此没有任何反应,并且不会影响TCustomWinSocket中的任何内容。

您说的是哪种客户识别码,目前还不清楚。 解释您认为服务器“应该找出”与服务器建立(试图建立)连接的客户端的信息



Eraser   (2002-02-13 14:44) [11]

为什么错了>>“套接字随机连接”?
Open之前所说的将是第一个,并将在Connections [0]中依次出现,依此类推。 这里的人也早先打开了计算机-这将是第一个(更确切地说是零)。
关于让我感到兴奋的数据,您可以在连接后随心所欲地添加信息!
但实际上,从原理上讲,我可以立即将特定计算机上传递的标识符放入其中? 只是不完全了解如何??



Digitman (M)   (2002-02-13 15:08) [12]

>>为什么错了>>“套接字随机连接”?
因为这个短语可以按您的喜好来解释! 例如:“套接字已被占用-并且本身已连接到某处”
事实证明,您已经想到了使用TServerSocket对象注册新的活动连接的过程。

因此,在此类注册之后,TServerSocket对象通过处理至少引发以下内容的事件引发OnClientConnect事件:客户端IP地址,客户端主机名,客户端端口。 所有这些都可以通过为与客户端的新连接创建的TCustomWinSocket类对象的属性以及Socket参数将其传递到TServerSocket.OnClientConnect事件处理程序的链接来获得:

类型TSocketNotifyEvent =对象的过程(发件人:TObject;套接字:TCustomWinSocket);

现在告诉我-这些信息对您来说还不够吗? 您的服务器是否还想了解有关客户机的信息,而不是指定的客户机?



Eraser   (2002-02-14 10:02) [13]

谢谢,我理解并做到了所有,但是现在有一个问题。
如果与特定客户端的连接(物理上)丢失(在一定时间内没有来自该客户端的数据),并且服务器没有发生故障(我在上面已经写过此内容),然后同一客户端再次尝试连接,则会发生API错误或连接到Connections [ <<最后一个合法>> + 1],并且他以前一直在忙于连接。 只有关闭帮助,然后为整个ServerSocket打开。 是否可以杀死特定的连接而不是ServerSocket? 或以某种方式可以有所不同? 好吧,假设您通过流完成此操作,那么当断开连接时,服务器将看到该流在其与客户端之间被中断了?



Digitman (M)   (2002-02-14 10:49) [14]

为了正确处理客户端/服务器的物理故障情况,例如,存在KeepAlive机制。

其本质是:客户端和服务器在指定的时间间隔互相发送一些正式信息,接收方将其解释为来自连接伙伴的定期通知,告知其“处于活动状态”且处于活动状态。 如果没有及时收到这样的“生命印记”,则希望该记录的一方只需简单地主动完成不可靠的连接,例如完成相同的“关闭”



Eraser   (2002-02-14 10:57) [15]

好吧,我知道,但是如果我要关闭服务器,那么所有连接都会断开,而不仅仅是没有连接断开。 如何确切地从没有答案的地方中断



Digitman (M)   (2002-02-14 11:33) [16]

您为什么要整个关闭服务器? 您具有Connections []的列表,因此仅其必要的元素(TServerClientWinSocket)并给出Close命令



Eraser   (2002-02-14 11:47) [17]

即 我应该做连接[i]。关闭,连接会断开吗?



Digitman (M)   (2002-02-14 12:08) [18]

是的 Connections [i] .Close关闭服务器与客户端的连接,在与该客户端成功连接后,服务器的连接数变为i



Eraser   (2002-02-14 14:18) [19]

多谢



Eraser   (2002-02-14 14:37) [20]

追求中的另一个问题:在我连接[i]之后。关闭此i连接将可用? 我尝试过然后打开。 他们写道,参数设置错误。



Digitman (M)   (2002-02-14 15:07) [21]

与我好奇,与谁建立联系[i]。 有客户吗? 您在哪里看到服务器友好地要求客户与他联系?)



Eraser   (2002-02-14 16:32) [22]

好吧,是的,了解之后,我意识到这是错误的。 但是问题不在于它是否会再次连接到我,或者是否在每次中断时都连接到我,并且在通讯过程中我会再增加1?



Vitaly   (2002-02-14 16:41) [23]

班!



Ghost.   (2002-02-14 16:47) [24]

它不会增加,但是根据实际连接数



Digitman (M)   (2002-02-14 16:57) [25]

我只是TServerClientWinSocket对象数组的元素中的索引。 您能否窥视Scktcomp.pas?



Digitman (M)   (2002-02-14 17:04) [26]

gh,稍后再讨论)...对象在对象数组中的索引!



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

论坛:“网络”;
当前存档:2002.04.25;
下载:[xml.tar.bz2];

楼上





内存:0.64 MB
时间:0.031 c
14-81055
海伦娜
2002-03-20 07:06
2002.04.25
你如何让组件认为Delphi正在运行?


1-80956
kopachev
2002-04-11 14:46
2002.04.25
为什么文本不出现在AdvStringGrid单元格中?


3-80779
kserg@ukr.net
2002-04-04 15:50
2002.04.25
DBGrid.columns - as


1-80939
P.
2002-04-11 12:20
2002.04.25
组合框


6-81031
Bodia
2002-02-12 11:44
2002.04.25
如何分享车轮!





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