社区
网络编程
帖子详情
CAsyncSocket的问题
FingerStyle
2007-01-26 10:06:28
m_Server给m_Client, m_Client的 OnReceive有反映!
但是m_Client 给 m_Server发数据, 为什么 m_Server 的 OnReceive 没反映啊 ??
为什么??
...全文
363
8
打赏
收藏
CAsyncSocket的问题
m_Server给m_Client, m_Client的 OnReceive有反映! 但是m_Client 给 m_Server发数据, 为什么 m_Server 的 OnReceive 没反映啊 ?? 为什么??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
FingerStyle
2007-01-26
打赏
举报
回复
呵呵, 刚才突然发现这个问题了
每个刚创建的 m_Send[i] 都要SetParent(), m_Send[] 就不响应了...
FingerStyle
2007-01-26
打赏
举报
回复
CServer只要响应消息的话 就会传到 ServerDlg 里处理....
FingerStyle
2007-01-26
打赏
举报
回复
这个类是个Dialog .
class CServer : pubic CAsyncSocket
{
private:
CDialog* m_pwnd;
void OnAccept()
{
.....
}
voie SetParent(CDialog* p)
{
m_pwnd = p;
}
void OnReceive()
{
((CServerDlg*)m_pwnd)->OnReceive();
}
};
class CServerDlg : ..
{
CServer m_Listen;
Cserver* m_Send[100];
};
m_Listen.SetParent(this); 在 CServerDlg的构造函数里....
Dlg 和 Socket 之间的关系....
gxh2004
2007-01-26
打赏
举报
回复
void CServerDlg::OnReceive() 从CAsyncSocket继承?我拷,你的那个类到底是个dialog还是一个socket啊?
FingerStyle
2007-01-26
打赏
举报
回复
上面的服务器继承的 CAsyncSocket
FingerStyle
2007-01-26
打赏
举报
回复
客户端和服务端都是异步的 大致代码:
void CServerDlg::OnAccept()
{ //假设最多100个连接..
for (int i=0; i<100; i++)
{
if (m_Send[i] == NULL)
{
m_Send[i] = new CServerSocket;
break;
}
}
m_Listen.Accept(*m_Send[i]);
m_strMsg.Format("2%3d",i); //2 000 数据格式, '2' 表示设置客户端的连接 ID.
if (m_Send[i]->Send(LPCTSTR(m_strMsg), m_strMsg.GetLength()) == SOCKET_ERROR)
//客户端收到后设置自己的ID 为 i, 客户端之间通信通过服务器转发.
{
MessageBox("服务器出错");
return;
}
else
{
}
m_strState.Format("已经有%d个客户端与服务器连接", ++m_iNum);
UpdateData(false);
}
//服务起只要OnReceive就出错,不知道为什么...
void CServerDlg::OnReceive()
{
// char* pbuffer = new char[1025];
// int buffsize = 1024;
// CString str;
// int iReceive = m_Send[0]->Receive(pbuffer, buffsize);
//
// if (iReceive == SOCKET_ERROR)
// {
// MessageBox("发生错误","提示");
// }
MessageBox("ENENEN");
}
小弟为了应付毕业设计, 刚学CSocket所以请大虾们指教...
gbstar2021
2007-01-26
打赏
举报
回复
没有代码,只能猜测一下问题
客户端使用了异步的 socket ,在连接成功之前就调用了 send 所以会 send 失败。
尝试一下把客户端 CAsyncSocket 改成同步的 CSocket 试验一下。或者尝试在客户端 OnConnect 被调用之后再发送数据。
FingerStyle
2007-01-26
打赏
举报
回复
在线等....
初用
CA
sync
Socket
遇到的
问题
[总结]
本文探讨了MFC中
CA
sync
Socket
类在网络编程中的应用及常见
问题
解决方案,包括初始化、连接及数据收发等方面。
CA
sync
Socket
::Connect 返回值
问题
本文探讨了使用
CA
sync
Socket
和C
Socket
处理实时与历史数据的
问题
。提出了多线程+同步及将历史数据获取改为C
Socket
同步方式两种解决方案,并讨论了连接成功性的检查方法。
CA
sync
Socket
TCP协议通信速度慢的
问题
(转)
本文探讨了使用
CA
sync
Socket
进行TCP文件传输时遇到的
问题
及解决方案,通过调整发送缓冲区大小、启用TCP_NODELAY等参数优化,显著提高了传输速度。
C
Socket
,
CA
sync
Socket
多线程退出时的一些注意事项(解决关闭WinSoket崩溃的
问题
)
本文主要探讨了在使用C
Socket
和
CA
sync
Socket
类进行多线程编程时,如何正确处理线程退出,以避免Windows
Socket
(Winsock)在关闭时出现崩溃的
问题
。通过引用的两篇博客,总结了解决此类
问题
的关键步骤和注意事项。
打怪升级之
CA
sync
Socket
类下create与bind
问题
CA
sync
Socket
的Create方法用于创建
Socket
,并可能自动调用Bind绑定到特定地址。SOCK_STREAM对应TCP,提供可靠的字节流服务,而SOCK_DGRAM对应UDP,用于无连接的数据报服务。如果在Create后再次BIND相同的IP和PORT,可能会导致WSAEINVAL10022错误,因为地址已被占用。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章