首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

简单的有关问题,请问,分只给一人

2012-03-05 
简单的问题,请教,分只给一人我的方法如下:服务器端WinMainSock属于winsock控件,非数组WinClientSock 属于w

简单的问题,请教,分只给一人
我的方法如下:
服务器端
WinMainSock 属于winsock控件,非数组
WinClientSock 属于winsock控件数组

WinMainSock用于监听,WinClientSock用来连接,都是一对一


现在有一问题是

  如果有两个或N个客户端发送数据到服务器,(数据<=8k),这时服务器端的WinClientSock控件数组是否会有一个 优先顺序,即先接到数据的先处理,后面的要等到第一个处理完成后再接收,还是同步都会处理接收数据?


网上找到的一句话:
服務端建一個WINsock數組,指定其中一個為偵聽專用,負責響應新的連接請求,其它都是一對一的關系。通常來說,隻要不是很多很多,服務器不會癱瘓。 

不知道对不


[解决办法]
控件数组并非控件,因此谈不上WinMainSock与WinClientSock一对一,到是可以看成是一对多.
每一个控件(包括在数组中的)都应该绑定一个端口.
如果控件数组中的每一个控件都向另一个控件的端口发数据,那当然要一个个进行处理,否则缓冲区不是乱了套了.
[解决办法]
不可能有同步的数据产生,肯定是按任务队列形式逐个处理的,只是因为分包的数据量不大,而且计算机的速度较快,给人的感觉像是在同步处理,但介于底层的基础(一条网线传输多个网络数据),在基础层已经排队处理了,怎么还可能正真的同步?
要知道,Sock通讯到了所谓的应用层开发底层,也就是到API接口,所谓的发送就是吧数据放入发送缓冲区,至于系统如何队列发送数据,那是另外一回事,不过可以肯定的是,这种工作肯定是队列形式出去或进来的。
[解决办法]
客户端很多时,要看多到什么程度.

控件数组的开销远比一个线程大得多,到时内存与CPU的资源就成了问题了.

我曾经用这种结构做成了一个集团用聊天/文档分享与管理程序,在线300人左右没有发现问题.

代码与下面这个差不多:

http://blog.m5home.com/article.asp?id=169
[解决办法]
不去考虑什么 cpu时间片的问题,不去考虑什么轮流执行的问题

先到先处理,不会产生管道阻塞,因为这是并发性质的,否则网络不就完蛋了吗....

每个 winclient 都绑定的是不同端口对应不同的客户端, 这样本身就不存在你说的问题.

但是单线程而言,这个问题还是存在的,如果你的程序在疯狂的干别的事,而没有时间响应新来的数据通知,还是会造成阻塞的
[解决办法]
以后注意下你的提问方式,提个问就提个问,什么分只给一人?简单的问题搞得那么复杂……
以为大家都仅仅为了那些个垃圾分数而来?对一个问题,仁者见仁智见智,如何评价“最”正确?
提个问还一副“分在我手我就是老大”的模样,我是不知道,如果知道我也懒得打字。



不捣蛋了,说个题外话。

VB code
If 本楼给分 Then楼主木有小jjEnd If 

热点排行