2011-05-21 98 views
1

我正在开发ActiveX EXE(即在一个单独的线程上)的套接字读取。与ActiveX EXE的套接字通信

我可以安全地独立读取多少个套接字?

我正在使用Windows XP操作系统。

+0

独立于什么?并安全地相对于什么? – Piskvor 2011-05-21 12:18:46

+0

@Piskvor,彼此独立(ActiveX EXE在独立进程中运行),并且从线程安全的角度来看是安全的。 – ramu 2011-05-21 12:40:14

+0

就我所见,线程安全并不是一个问题,除非你的意思是别的,而不是我的想法。 “我可以读取的套接字”听起来很奇怪,你是问Winsock控制实例是否被主动连接并传递数据?如果是这样,可能接近您在主程序中可以使用的数量。 – Bob77 2011-05-21 16:43:46

回答

0

我认为这可能是操作系统的限制 - 我想我记得在几年前我使用的XP机器上运行了80个套接字的限制。

+0

你是否成功地在80个线程上独立运行80个套接字? – ramu 2011-05-23 05:46:43

+0

@ramu:不,他们只是80个针对80个客户开放的winsock对象实例。该计划像往常一样事件驱动。线程将如何改变? – quamrana 2011-05-23 08:31:30

+0

我正在编写独立进行每个套接字通信的代码。这就是为什么我选择ActiveX EXE.Client应用程序只是触发通信,ActiveX EXE会通知客户端的事件。所以我关心的是两个方面。 1.)应用程序可以创建的套接字的最大数量(从操作系统的角度来看)2. VB可以提供线程安全性的最大线程数。希望现在清楚:-) – ramu 2011-05-23 09:04:22

0

我会建议你放弃你的努力,并与商业解决方案。我记得在九十年代重新走上了这条道路,并且在线程运行的时候遇到了ActiveX EXE的砖墙。事情是,ActiveX EXE是单元线程的,而不是自由线程的,所以你不会得到完全独立的线程。

在现代语言中正确地完成服务器端线程已经够难了,更不用说那些不是为此目的而设计的。

我最终从Dart购买了Server Sockets。轻松实现该项目的最佳投资。性能真的很棒 - 你只受系统资源的限制。

+0

我正在使用试用版的组件您建议。感谢您分享信息。 – ramu 2011-05-24 05:05:14

0

MSWINSCK.OCX是一种非常古老的做事方式;它带有Visual Basic 6.0,我记得在什么时候使用它。我不确定它的授权......显然它在32位win7下注册,但不是64位;这里有一个如何让它在64位系统上注册的链接:http://angrybyte.com/windows-hacks/mswinsck-ocx-for-64-bit-windows-7-vista/

如果你有一个MSDN订阅或类似的,使你能够下载开发工具(bizSpark等也可以),那么我相信这也会给你一个重新分配.ocx的许可。

(顺便说一句,我真的不记得了接口,但我似乎记得它是至少略高于Berkeley套接字更直观()接口。)

然而,个人推荐给您的要求:学习API,这里有很多例子,并且只需要编写一个类,以类似于.NET Socket类的方式封装它们;这些API并不那么难,而且我确定有很多在这里也有帮助,而且这可能比依靠像控制器这样过时的东西更好...