社区
网络编程
帖子详情
Winsock TCP 连接数限制
huangjinsheng726
2009-09-01 05:24:47
听说windows对Tcp/ip连接数有限制(好像只有几十个连接数),我想知道,用VB的winsock控件进行tcp连接,是否会受这个连接数限制的影响?
如不受限制,请问使用该控件可支持多少个Tcp连接.
多谢
...全文
552
8
打赏
收藏
Winsock TCP 连接数限制
听说windows对Tcp/ip连接数有限制(好像只有几十个连接数),我想知道,用VB的winsock控件进行tcp连接,是否会受这个连接数限制的影响? 如不受限制,请问使用该控件可支持多少个Tcp连接. 多谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
muma237
2010-06-03
打赏
举报
回复
我们想到的办法是多线程+多服务器 来均衡负载
jessezappy
2009-11-18
打赏
举报
回复
如果不用多线程技术的话,VB普通EXE做出来的服务器不是并发的,不管你有多少个Winsock控件数组都是一样,同一时刻,只可能有一条 .senddata命令在执行。
程序变慢的原因就多了,不单是这个。但是如果连接多了,比如你的3800,那么在3800个连接进行 .senddata 时,就会阻塞在这里,因为发送数据是需要时间等待的。
我之前做了一个就是因为这个阻塞问题才开始考虑用多线程进行操作的,结果现在遇到了另一个头疼的问题,程序已经实现了并发,但是仅有50几个线程同时进行并发操作时,主程序界面就卡死了,而子线程内的.senddata 操作还在继续。。。现在就是要解决这个主界面卡住的问题。。。头疼了。
huangjinsheng726
2009-09-07
打赏
举报
回复
自己写了个连接测试程序,试图连接10000个,可是连接到3800多个的时候机子已经好慢了。。。
呵呵,虽然还不是很清楚连接限制到底是指怎么限制。。。不过算啦,多谢各位的热心帮忙,分给了。
Tiger_Zhao
2009-09-02
打赏
举报
回复
关键看数据量和网络速度,到达某个峰值就会产生拥堵。
huangjinsheng726
2009-09-01
打赏
举报
回复
才几百个而已啊,汗,还以为可以上万个呢.
所谓并发是怎样的?
我是系统通过动态加载winsock对应每个不同的用户的.预计连接的客户端数目可能至少有一千个.
如果只能连几百个,那问题就大了
怎么办?
大熊猫侯佩
2009-09-01
打赏
举报
回复
[Quote=引用楼主 huangjinsheng726 的回复:]
听说windows对Tcp/ip连接数有限制(好像只有几十个连接数),我想知道,用VB的winsock控件进行tcp连接,是否会受这个连接数限制的影响?
如不受限制,请问使用该控件可支持多少个Tcp连接.
多谢
[/Quote]
你的并发数很多么??除非BC,迅雷这种东东,一般不用fix的
倒大霉的上帝
2009-09-01
打赏
举报
回复
我只测试过300个并发用户,再多了我没试过。(因为已经够用了)
理论上时没有的。
chinaboyzyq
2009-09-01
打赏
举报
回复
没限制,看内存大小.
500个以内的连接应该没问题
winsock
带注册文件
一、
WinSock
简介 Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由Sun Microsystems,JSB,FTP software,Microdyne和Microsoft等几家公司共同定制了一套标准,即Windows Socket规范,简称
WinSock
。 VB编写网络程序主要有两种方式:1.
winsock
控件 2.
winsock
API 二、
WinSock
控件的使用 1.
WinSock
控件的主要属性 LocalHostName属性 本地机器名 LocalIP属性 本地机器IP地址 LocalPort属性 本地机器通信程序的端口(0<端口<65536) RemoteHost属性 远程机器名 RemotePort属性 远程机器的通信程序端口 Protocol属性 通过Protocol属性可以设置
WinSock
控件连接远程计算机使用的协议。可选的协议是
TCP
和UDP对应的VB的常量分别是sck
TCP
Protocol和sckUDPProtocol,
Winsock
控件默认协议是
TCP
。注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。 SocketHandle属性 返回当前socket连接的句柄,这是只读属性。 RemoteHostIP属性 属性返回远程计算机的IP地址。在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。 ByteReceived属性 返回当前接收缓冲区中的字节数 State属性 返回
WinSock
控件当前的状态 常数 值 描述 sckClosed 0 缺省值,关闭。 SckOpen 1 打开。 SckListening 2 侦听 sckConnectionPending 3 连接挂起 sckResolvingHost 4 识别主机。 sckHostResolved 5 已识别主机 sckConnecting 6 正在连接。 sckConnected 7 已连接。 sckClosing 8 同级人员正在关闭连接。 sckError 9 错误 2.
WinSock
主要方法 Listen方法 方法用于服务器程序,等待客户访问。格式:
Winsock
对象.listen Connect方法 用于向远程主机发出连接请求。格式:
Winsock
对象.connect [远程主机IP,远程端口] Accept方法 用于接受一个连接请求。格式:
Winsock
对象.accept Request ID Senddata方法 用于发送数据。格式:
Winsock
对象.senddata 数据 Getdata方法 用来取得接收到的数据。格式:
Winsock
对象.getdata 变量 [,数据类型 [,最大长度]] Close方法 关闭当前连接。格式:
Winsock
对象.close Bind方法 用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序不能再使用这个端口。 Listen方法Listen方法只在使用
TCP
协议时有用。它将应用程序置于监听检测状态。 Connect方法 当本地计算机希望和远程计算机建立连接时,就可以调用Connect方法。Connect方法调用的规范为:Connect RemoteHost,RemotePort Accept方法 当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的请求。 SendData方法当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参数,就是要发送的数据。 GetData方法 当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓冲区中取出数据,可以使用GetData方法。GetData方法调用规范如下:GetData
数控系统中混合型网络化通信系统研究.pdf
提出了一种由有线通信与无线通信相结合的并应用于数控系统的混合型网络通信系 统。利用上位机与下位机结合的操作方式来实现组网,上下位机以基于
TCP
/IP协议的工业以太网平 台连接;另外,数控系统通过虚拟串口技术与外围设备PDA组建蓝牙微微网,PDA可实现数控系统无 报警信号的故障诊断功能。上下位机网络通信程序利用
Winsock
控件在C Builder6环境中设计;在 evb3.0环境中编写了PDA接收数据程序。通过上述方法下位机在正常运行时,CAD
Socket编程系列之2:Windows-API网络编程入门实战
Winsock
编程接口 l UDP程序设计 l
TCP
套接口函数 l Web客户/服务器程序 l 基于windows的IO复用机制 l UDP广播和多播 l 套接字选项 l Windows套接字I/O模型 l 原始套接字与...
游戏编程--网络互连
Winsock
程序设计初步之
Winsock
编程原理 本课程主要讲Windows中
TCP
/IP编程接口
Winsock
,版本为1.1。高版本的
Winsock
实际与1.1版相差不多,主要是进行了一些扩充,如可超越
TCP
/IP协议直接用socket来实现IPX、NETBIOS等其它通信协议。 这叙述方便在本文的其余部分中提到的
Winsock
指的就是
Winsock
1.1。 通过
Winsock
可实现点对点或广播通信程序,实际这两者之间的区别不大,编程时其程序流程所用代码几乎相同,不同的地方在于目标地址选择的不同。本课程中所举实例为点对点的形式,并以客户/服务器形式来构建通过
Winsock
进行通信的点对点通信,并对通信过程的两点分别命名为Server和Client。 为更清楚的说明出
Winsock
的结构原理,下面以电信局的普通电话服务为比较对象进行说明: 1、电信局提供电话服务类似版主们这的Server,普通电话用户类似版主们这的Client。 2、首先电信局必须建立一个电话总机。这就如果版主们必须在Server端建立一个Socket(套接字),这一步通过调用socket()函数实现。 3、电信局必须给电话总机分配一个号码,以便使用户要拨找该号码得到电话服务,同时接入该电信局的用户必须知道该总机的号码。同样,版主也在Server端也要为这一套接字指定一port(端口),并且要连接该Server的Client必须知道该端口。这一步通过调用bind()函数实现。 4、接下来电信局必须使总机开通并使总机能够高效地监听用户拨号,如果电信局所提供服务的用户数太多,你会发现拨打电信局总机老是忙音,通常电信局内部会使该总机对应的电话号码连到好几个负责交换的处理中心,在一个处理中心忙于处理当前的某个用户时,新到用户可自动转到一下处理中心得到服务。同样版主们的Server端也要使自己的套接口设置成监听状态,这是通用listen()函数实现的,listen()的第二个参数是等待队列数,就如同你可以指定电信局的建立几个负责交换的处理中心。 5、用户知道了电信局的总机号后就可以进行拨打请求得到服务。在
Winsock
的世界里做为Client端是要先用socket()函数建立一个套接字,然后调connect()函数进行连接。当然和电话一样,如果等待队列数满了、与Server的线路不通或是Server没有提供此项服务时,连接就不会成功。 5、电信局的总机接受了这用户拨打的电话后负责接通用户的线路,而总机本身则再回到等待的状态。Server也是一样,调用accept()函数进入监听处理过程,Server端的代码即在中处暂停,一旦Server端接到申请后系统会建立一个新的套接字来对此连接做服务,而原先的套接字则再回到监听等待的状态。 6、当你电话挂完了,你就可以挂上电话,彼此间也就离线了。Client和Server间的套接字的关闭也是如此;这个关闭离线的动作,可由Client端或Server端劝嬷骰方先关闭。有些电话查询系统不也是如此吗?关闭套接字的函数为 closesocket()。 从以上情况可以看出在服务器端建立一个套接字,并进入实际的监听步骤的过程如下:socket()->bind()->listen()->accept() 那么在accept()完了后,版主们说在Server端将生成一个新的套接字,然后Server将继续进入accept()状态,版主们该如何用这个新的套接字来进行与Client端的通信呢,这就用到了recv()函数,而Client端则是通过send()函数来向服务器发信息的。
vc网络开发包
年初学习c++时的作品主要封装了CNdkIOCPServer,CNDKThreadServer,CNdk
Tcp
Client三个类及相关的连接池,线程池等,大家看看,有意见的话给我提提starcbh@21cn.comNdkIOCPServer类需win2k以上必须
winsock
2.2以上版本============================================// NdkIOCPServer.h: interface for the CNdkIOCPServer class./*警告: 无论在何种情况下,应用程序都不应关闭(closesocket)一个在AcceptEx中使用的, 但尚未被接受的socket句柄,这样会导致内存泄漏,由于性能原因,在未连接的 socket句柄被关闭时 与acceptEx调用相关的核心模式结构不会被彻底的清除, 除非连接被接受或监听套接字被关闭。 因此:多次启动->关闭服务器后(每次产生一个监听失败,上述情况发生) 在stop服务器后没有调用CNdkSocketPool::freeAll(false)方法的话 在m_pSocketPool中被使用的socket将会逐个增加!!!!*//*重叠IO + 完成端口的
TCP
Server类使用了微软扩展!!!!!(必须链入mswsock.lib)连接时间控制(可防止DOS攻击)最大
连接数
控制工作线程池(因为工作线程数量基本固定 这个必要性不大)连接缓冲池使用AcceptEx支持服务器优化偏重(三种选择)1.最大并发数2.高吞吐率(流量控制及连接优先级尚未加入)3.中等并发数量 中等吞吐率*/
网络编程
1,502
社区成员
18,437
社区内容
发帖
与我相关
我的任务
网络编程
VB 网络编程
复制链接
扫一扫
分享
社区描述
VB 网络编程
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章