社区
网络编程
帖子详情
一个关于CSocket的棘手问题.
小元宝
2006-08-15 03:39:50
我在CSocket 多线程来发送文件列表,运行一段时间之后,一个客户端给另外一个可端发送一个命令时
,对方无法接受, Send 函数也被夯住, 不知道哪位大虾遇到过这样类似的问题,谢谢!
...全文
242
8
打赏
收藏
一个关于CSocket的棘手问题.
我在CSocket 多线程来发送文件列表,运行一段时间之后,一个客户端给另外一个可端发送一个命令时 ,对方无法接受, Send 函数也被夯住, 不知道哪位大虾遇到过这样类似的问题,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小元宝
2006-08-16
打赏
举报
回复
我的问题已经解掉.
小元宝
2006-08-15
打赏
举报
回复
1.CSocket是非线程安全的
它应该指不要在多个线程中用同一个Csocket 对象吧,我是一个线程有唯一的Csokcet对象,不会有这样的问题。
2.你的线程间的同步?
同一个线程之间是同步的,而且并不会出现一个套截字在接受数据时,还发送数据的情况。
上面的问题是, 在CAsyncSocket::Send(lpBuf, nBufLen, nFlags)) 遇到WSAEWOULDBLOCK 事件,但是当下次可WRITE时,再次发送后,结果还是 WSAEWOULDBLOCK, 这样就形成一个死循环。
不知道,什么原因啊!!!!
if (!PumpMessages(FD_WRITE))
return SOCKET_ERROR;
DentistryDoctor
2006-08-15
打赏
举报
回复
1.CSocket是非线程安全的
2.你的线程间的同步?
snowbirdfly
2006-08-15
打赏
举报
回复
呵呵~
我也是基本上是采用楼上的方法~~~
毕竟MFC在某些封装不是太完美~~
但是这样做,难度也增加,毕竟要对于Winsock要比较熟悉~~~
Elysium
2006-08-15
打赏
举报
回复
我用SOCKET以及相关API,CSocket从Win16位脱胎而来,对于多线程处理略有不足,可以自己继承一个类编写控制函数
小元宝
2006-08-15
打赏
举报
回复
大家在写网络程序是很多人在使用MFC的CSocket,我觉得它并不好用,而且效率很低,还问题多多.
不知大家在开发的过程中自己建立Sokcet IO模型, 这样控制起来比较简单吧.
小元宝
2006-08-15
打赏
举报
回复
在一个客户端给另一个客户端发送数据的过程中,每次的数据包大小,都不一定相同,最大的有1百多K的buffer, 在循环发送多次后,某一次发送一个20个字节的数据,它被死锁在CSocket的SendChunk中的在PumpMessage中, 不知是何原因,难道是套接字的系统buffer已经满了??
int CSocket::SendChunk(const void* lpBuf, int nBufLen, int nFlags)
{
int nResult;
while ((nResult = CAsyncSocket::Send(lpBuf, nBufLen, nFlags)) == SOCKET_ERROR)
{
if (GetLastError() == WSAEWOULDBLOCK)
{
if (!PumpMessages(FD_WRITE))
return SOCKET_ERROR;
}
else
return SOCKET_ERROR;
}
return nResult;
}
mynamelj
2006-08-15
打赏
举报
回复
一个客户端给另外一个可端发送一个命令时,对方无法接受
------------------------------
造成这种问题有太多的原因了,你还是把问题摸得更具体点,不然没办法帮你.
用C
Socket
基于UDP协议进行网络通信过程中OnReceive函数无法响应消息的
一个
原因
在用C
Socket
类进行网络通信过程中,我们需要派生出
一个
子类这里我们用D
Socket
才可以进行通信,利用D
Socket
声明对象,创建套接字,在D
Socket
类中需要重载C
Socket
类中的OnReceive函数,这个函数有
一个
显著的特点就是...
基础
请问怎么得到
一个
函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画
一个
箭头?高分请教如何限制程序运行的方法?求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit...
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx怎样将后台生成的在内存中的图象显示到客户端Microsoft IE ...显示数据下载中文名文件时保存文件名乱码
问题
关于用ASP.net绘图的
问题
...
同步和异步
Socket
多线程编程基本模型介绍
多线程的概念: 多线程是这样一种机制,它允许在程序中并发执行多个线程,且每个线程彼此间互相独立。 并发的理解: 多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。 1. 实现...
CSDN回帖得分大全(近两年)
一个
关于利用WinInet和网站通信的
问题
[VC/MFC 网络编程] √ 如何得知我写的注入dll是否被调试软件调试? [VC/MFC 基础类] √ 关于初级dll编写的
问题
[VC/MFC 基础类] √ ...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章