WinSock问题求救!? 我有一处不明:ar << (WORD)m_bClose;不就关闭连接了吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 既然是在那里出错,是不是你的CArchiev没有和CSocket连接上呢? 老大,别用csocket啊,他是同步的,程序不好控制,可以说没什么使用价值,用它的基类好一点:) 1。ar << (WORD)m_bClose;是一个标志,当接收端发现这个标志变为FALSE时就自动断开链接。2。我的CArchiev和CSocket在初始化CArchiev和CSocket时是连接上的,那时也可以传输数据,但在后面调用CArchiev时就不成了。3。WinSock我也是刚刚使用,对一些概念也不熟,希望各位能够提供可以直接应用的原码。 讨论讨论吧。我在写WinSock程序,不过我用的是API,对你用的类不了解。你可以直接使用CSocket的send发送,如果失败,说明连接已经关闭。你还可以跟踪服务端,看连接是否关闭。 to jiujiejushi: ”你还可以跟踪服务端,看连接是否关闭“,如何跟踪,可以说具体点儿吗?。 在你SendMeg时,你的m_pFile文件指针已出了作用范围,检查一下你文件指什的作用区域。ASSERT_VALID(m_pFile);指的是m_pFile为NULL值。 我想可能问题是出在m_pArchiveOut变量(CAchive类)上,而m_pFile变量是CAchive类的一个私有变量,由于这个变量的m_pFile出了作用范围,但我没有搞清楚,为什么这个变量超出作用范围,而m_pArchiveOut又没有问题。 应该是你的Socket句柄被关闭了 又发现了一个新问题:我在SendMsg()函数中,一旦执行delete m_pArchiveIn;系统都会报错,但m_pArchiveIn并不是空的。附:m_pArchiveIn产生 m_pSocket = new CCliSocket(); if (!m_pSocket->Create()) { delete m_pSocket; m_pSocket = NULL; AfxMessageBox(IDS_CREATEFAILED); return FALSE; } while (!m_pSocket->Connect(lpszAddress, nPort + 700)) { delete m_pSocket; m_pSocket = NULL; return FALSE; } m_pFile = new CSocketFile(m_pSocket); m_pArchiveIn = new CArchive(m_pFile,CArchive::load); m_pArchiveOut = new CArchive(m_pFile,CArchive::store); 我又测试了一下,发现如果将建立Socket部分及SendMsg部分函数放到CDocument类中,就可以实现发送(msdn中的例子就是这样),非常奇怪?有没有高手知道这个问题? VC时给类变量赋值,全值却不改变 [求助]VC编写“打开”报错“试图访问 文明名的文件 时超过它的结尾” 请教 OpenGL Shading Language 平台判定的问题 怎样控制网络中任一台计算机的网络连接的通断? 向要用VC操作XML文件如何做 退出程序应该用什函数? 请问ShowWindow(SW_NORMAL)的问题 关于AfxBeginThread 为什么 不能得到 xml 接点的值????(急,在线等待) Eidt问题?? How to use ADO to create Access database file? vc 字符串转时间问题
2。我的CArchiev和CSocket在初始化CArchiev和CSocket时是连接上的,那时也可以传输数据,但在后面调用CArchiev时就不成了。
3。WinSock我也是刚刚使用,对一些概念也不熟,希望各位能够提供可以直接应用的原码。
你可以直接使用CSocket的send发送,如果失败,说明连接已经关闭。
你还可以跟踪服务端,看连接是否关闭。
”你还可以跟踪服务端,看连接是否关闭“,如何跟踪,可以说具体点儿吗?。
ASSERT_VALID(m_pFile);指的是m_pFile为NULL值。
附:m_pArchiveIn产生 m_pSocket = new CCliSocket(); if (!m_pSocket->Create())
{
delete m_pSocket;
m_pSocket = NULL;
AfxMessageBox(IDS_CREATEFAILED);
return FALSE;
} while (!m_pSocket->Connect(lpszAddress, nPort + 700))
{
delete m_pSocket;
m_pSocket = NULL;
return FALSE;
} m_pFile = new CSocketFile(m_pSocket);
m_pArchiveIn = new CArchive(m_pFile,CArchive::load);
m_pArchiveOut = new CArchive(m_pFile,CArchive::store);