社区
进程/线程/DLL
帖子详情
多线程中的RECV函数问题??
king-0325
2009-10-24 12:25:32
我想基于TCP/IP下建一个服务器和多个客户段,
我在服务器是用多线程接收客户段传过来的消息,
现在我的问题是当服务器接收一个客户发送过来的消息还好,当要是多个客户段传过来的消息时,就发生了阻塞,有没有那个大哥能帮我解决一下(我是利用创建单个线程跟客户连接的,既一个线程对应一个客户段)???
...全文
210
6
打赏
收藏
多线程中的RECV函数问题??
我想基于TCP/IP下建一个服务器和多个客户段, 我在服务器是用多线程接收客户段传过来的消息, 现在我的问题是当服务器接收一个客户发送过来的消息还好,当要是多个客户段传过来的消息时,就发生了阻塞,有没有那个大哥能帮我解决一下(我是利用创建单个线程跟客户连接的,既一个线程对应一个客户段)???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fishion
2009-10-24
打赏
举报
回复
你要创建多个线程,一般是cpu数目X2
yinshisike
2009-10-24
打赏
举报
回复
[Quote=引用 4 楼 fishion 的回复:]
引用 2 楼 xhmff9 的回复:
引用 1 楼 fishion 的回复:
你要创建多个线程,一般是cpu数目X2
不要误人子弟,那是完成端口的做法,他现在是一个线程服务一个连接!
原来记错了,呵呵
[/Quote]
你没记错,只是多数人都这么说,
但这都不是重要的,重要的是你看看别人在什么样设计模式下说的这些话.
线程数量的多少,完全根具体的业务相关,不是所有设计模式都通用.
yinshisike
2009-10-24
打赏
举报
回复
[Quote=引用楼主 tqg0325 的回复:]
我想基于TCP/IP下建一个服务器和多个客户段,
我在服务器是用多线程接收客户段传过来的消息,
现在我的问题是当服务器接收一个客户发送过来的消息还好,当要是多个客户段传过来的消息时,就发生了阻塞,有没有那个大哥能帮我解决一下(我是利用创建单个线程跟客户连接的,既一个线程对应一个客户段)???
[/Quote]
服务器端的问题在于怎么管理这些已经连接的客户端,不在于怎么接收数据.
fishion
2009-10-24
打赏
举报
回复
[Quote=引用 2 楼 xhmff9 的回复:]
引用 1 楼 fishion 的回复:
你要创建多个线程,一般是cpu数目X2
不要误人子弟,那是完成端口的做法,他现在是一个线程服务一个连接!
[/Quote]
原来记错了,呵呵
xhmff9
2009-10-24
打赏
举报
回复
回到问题上来,你面对的问题和解决方法是多数网络程序初学者的解决方法!把<<Windows网络程序设计>>看透,你的问题最终还是得回到完成端口上来解决,当然你愿意用其他模型也未尝不可!
xhmff9
2009-10-24
打赏
举报
回复
[Quote=引用 1 楼 fishion 的回复:]
你要创建多个线程,一般是cpu数目X2
[/Quote]
不要误人子弟,那是完成端口的做法,他现在是一个线程服务一个连接!
recv
函数
linux,linux 下调用
recv
函数
,死循环在
recv
函数
里面,什么原因?
linux 下调用
recv
函数
,死循环在
recv
函数
里面,什么原因?linux服务器,在连接只有1000个时候,一切正常,到连接到2000以上的时候,就死循环在
recv
函数
里面,cpu占用率很高,因为
recv
是系统
函数
,也不知道他在里面干什么。程序是epoll实现的。 有谁碰到过类似
问题
么?或者是能指导一个努力的方向? 回1楼:不是建立连接的时候死循环,而是跑了一段时间后,在调用
recv
函数
的时候...
linux
多线程
recv
安全吗,在
多线程
环境
中
recv
()不会被信号
中
断
我有一个处于阻塞
recv
()循环
中
的线程,我想终止(假设不能将其更改为select()其他任何异步方法)。我也有一个捕获的信号处理程序,SIGINT理论上它应该
recv
()返回错误并errno设置为EINTR。但是事实并非如此,我认为这与应用程序是
多线程
的事实有关。还有另一个线程,正在等待pthread_join()呼叫。这里发生了什么事?编辑:好的,现在我将信号从主线程显式传递给所有阻塞
recv
...
recv
函数
recv
函数
int
recv
( SOCKET s, char FAR *buf, int len, int flags); 不论是客户还是服务器应用程序都用
recv
函数
从TCP连接的另一端接收数据。该
函数
的第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放
recv
函数
接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。 这里只描述同步S
C++socket编程学习总结(2)(发送信息send
函数
、
recv
函数
与
多线程
实现多个用户同时连接)
今天接着昨天的学习来,昨天我复习了简单的TCP服务器的创建、绑定端口号、监听并接收信息,还有大端(网络字节流)小端(X86架构CPU使用的字节流)的概念。 今天复习发送信息send
函数
\
recv
函数
与
多线程
实现多个用户同时连接。send
函数
用于发送一段数据,
recv
函数
用于接收数据。 如下所示: char buf[1024];//接收信息的最大长度,记位buf memset(buf, 1...
Linux C
recv
函数
阻塞
问题
问题
描述: 有个Linux项目用到TCP/IP通讯,但是
recv
()
函数
老是阻塞,没有返回;setsockopt()也设置了超时时间,同时在执行
recv
()之前也增加了select()查看套接字的状态,如果状态异常异常是不会执行
recv
()
函数
的 原因分析: 1、
recv
()是Linux的系统
函数
,肯定不会卡死,除非Linux内核故障,基本可以排除; 2、客户端向服务器端发送数据,服务器端没有接收,导致缓冲区满,客户端无法接收数据,因此客户端阻塞?等等,我不是加了超时吗?怎么还会阻塞? 3、读写超时设
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章