社区
网络编程
帖子详情
怎么让socket服务器能接受大量的连接?
lsxsxs
2011-11-23 11:45:14
我现在采用的方法是一个连接建一个线程处理,这种方法我相信在连接数量很大的的时候肯定不行,比如上千个连接的话我想肯定会有问题。有没有什么方法能接受上千个连接,并且会比较稳定的。
...全文
339
20
打赏
收藏
怎么让socket服务器能接受大量的连接?
我现在采用的方法是一个连接建一个线程处理,这种方法我相信在连接数量很大的的时候肯定不行,比如上千个连接的话我想肯定会有问题。有没有什么方法能接受上千个连接,并且会比较稳定的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iblold
2011-12-02
打赏
举报
回复
[Quote=引用 17 楼 lsxsxs 的回复:]
引用 16 楼 hurryboylqs 的回复:
这就是IOCP的聪明之处,你就连上来不发数据不是来找茬的吗?
然后你不得不发一包数据,那么这包数据就得经过我的验证是否合法
不合法,我又可以判定你是来找茬的。
我现在要准备做的程序就是连上来了不发数据给我,而要我发数据给客户端。这就使得我必须在客户端连接上就做出响应,如果我不先给客户端发数据,我永远都等不到客户端发上来的数据。就是不知道……
[/Quote]
AcceptEx的时候dwReceiveDataLength填0,那样的话一旦有客户端连接直接就accept而不等待用户消息了
小布
2011-12-02
打赏
举报
回复
完成端口。搜一下吧。
chenjiawei007
2011-11-25
打赏
举报
回复
你最初的设计是一个连接一个请求,这样的模型就是无法支持大连接数。
线程本身占用一定开销,而且相当可观,在上500个线程后CPU就很吃紧。
首先你应该改正你的线程模型设计,然后再选择你擅长的网络模型。
线程模型简单的设计:
单独线程处理accept请求,加入连接管理容器。
根据cpu数据量,开辟相应数量的线程去处理网络事件。(如果这里处理数据量非常大,可以考虑线程池做优化)
lsxsxs
2011-11-25
打赏
举报
回复
[Quote=引用 16 楼 hurryboylqs 的回复:]
这就是IOCP的聪明之处,你就连上来不发数据不是来找茬的吗?
然后你不得不发一包数据,那么这包数据就得经过我的验证是否合法
不合法,我又可以判定你是来找茬的。
[/Quote]
我现在要准备做的程序就是连上来了不发数据给我,而要我发数据给客户端。这就使得我必须在客户端连接上就做出响应,如果我不先给客户端发数据,我永远都等不到客户端发上来的数据。就是不知道这里怎么弄。
hurryboylqs
2011-11-25
打赏
举报
回复
这就是IOCP的聪明之处,你就连上来不发数据不是来找茬的吗?
然后你不得不发一包数据,那么这包数据就得经过我的验证是否合法
不合法,我又可以判定你是来找茬的。
lsxsxs
2011-11-25
打赏
举报
回复
谢谢各位提示啊。我下载了一个完成端口的例子在看,但是发现一个连接在连接上的时候似乎是收不到任何信息的,只有它发送第一条数据才会一起收到它的连接信息和第一条数据。在网上看到说用getsockopt来一直循环检查,但我还没搞懂怎么用它来一直检查
hurryboylqs
2011-11-24
打赏
举报
回复
几百上千个链接是很小的了
langyano1
2011-11-24
打赏
举报
回复
IOCP 完成端口,内核级异步高效的东东
yynetsdk
2011-11-24
打赏
举报
回复
select
iocp
mayudong1
2011-11-24
打赏
举报
回复
可以搜索一下socket io模式
chen837454773
2011-11-24
打赏
举报
回复
用完成端口模式
「已注销」
2011-11-24
打赏
举报
回复
IOCP可以轻易handle
zhongguoren666
2011-11-24
打赏
举报
回复
用IOCP可以解决这个问题,要是没记错的话,能支持同时连接65536个。
这个是我的博客:http://blog.csdn.net/zhongguoren666/article/details/7000710
有文章,还有下载源码地址。下载的的源码在VC6。0下可直接使用。
欢迎访问。
smwhotjay
2011-11-23
打赏
举报
回复
一线程一连接是串行模型..支撑个800连接没问题.但cpu有时不稳定.
还是iocp.写的代码架构好可以支撑几k没问题.
Bestsharp007
2011-11-23
打赏
举报
回复
用线程池
3楼说的对,
windows下可以用IOCP,参考http://blog.csdn.net/piggyxp/article/details/6922277
linux下用e-poll,这个我也没接触过
lsxsxs
2011-11-23
打赏
举报
回复
就是TCP通信的服务器端,有可能会有几百上千个连接收发数据,有有这方面经验的吗,像这种需要支持很多连接的服务器主要是用什么方法呢
lsxsxs
2011-11-23
打赏
举报
回复
[Quote=引用 3 楼 ouyh12345 的回复:]
iocp
e-poll
[/Quote]
能详细说说吗
ouyh12345
2011-11-23
打赏
举报
回复
iocp
e-poll
动起手来实现白日梦
2011-11-23
打赏
举报
回复
同样的程序,可以做负载均衡。
lsxsxs
2011-11-23
打赏
举报
回复
自己顶一下,快来人看啊
C++
socket
网络编程--http
服务器
(支持php)实战教学视频
C++
socket
网络编程大全实战http
服务器
(支持php)视频培训教程概况:本课程会同时演示在linux和windows中的编程,课程中的线程和正则表达式都使用c++提供库。本课程包含了
socket
网络编程常用的所有特性,包括tcp、udp协议的基础编程,广播包,超时
连接
,多路复用,高并发的epoll多路复用,多线程的服务端。课程讲解理论与实践相结合,实践以代码延时讲解为主。
Java网络||
socket
实现多个客户端
连接
在一个
服务器
上
使用
socket
通信的步骤
服务器
端:在
服务器
端用
socket
()建立套接字,用accept()等待客户端
连接
,accept()有阻塞的作用,在没有接收到客户端
连接
时会阻塞
服务器
接下在的执行,知道客户端
连接
为止。 客户端:同样利用
socket
()建立套接字
连接
服务器
,利用字节流从
服务器
里读写数据,直至数据交换完毕(交换完毕与字节流传输有关)。 多客户端
连接
同一
服务器
设备
连接
服务器
并不只是局...
C#
Socket
处理多个
连接
Socket
监听多个
连接
并进行处理] 思路: 1.创建一个
Socket
对象用于
服务器
监听客户端的
连接
2.当有客户端
连接
上之后,新开一个线程为不停的去
接受
该
连接
发送的消息 并进行处理 3.服务端的
Socket
对象继续监听其他客户端的
连接
4.
服务器
端每监听到一个
连接
,就创建一个线程为该
连接
进行处理 实现
Socket
监听多个
连接
理解上面的思路 如果你对一定基础,应该就能自己写出来了
Java使用
Socket
网络编程,
Socket
连接
不释放/发现
大量
TIME_WAIT/CLOSE_WAIT、
服务器
卡死等问题?看这篇就解决了!
填坑日记: 1.
Socket
使用情况: 在Java项目中,
服务器
端使用了Server
Socket
网络编程来处理各个C++客户端发送过来的数据。使用流程主要如下: (1)程序启动时,开启一个线程进行
socket
监听; ListenThread listenThread = new ListenThread(server
Socket
); Thread serverListenThread ...
socket
客户端与
服务器
操作流程
TCP编程 1、TCP协议是面向
连接
的、可靠的、有序的、以字节流的方式发送数据,通过三次握手方式建立
连接
,形成传输数据的通道,在
连接
中进行
大量
数据的传输,效率会稍低 2、Java中基于TCP协议实现网络通信的类 客户端的
Socket
类
服务器
端的Server
Socket
类 3、
Socket
通信...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章