class CNewSocket : public CAsyncSocketvoid CNewSocket::OnReceive(int nErrorCode)
{
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
m_ListBox.InsertString(0,m_szBuffer); // 将收到的消息再发回
AsyncSelect(FD_WRITE);
}void CNewSocket::OnSend(int nErrorCode)
{
Send(m_szBuffer,m_nLength,0);
}
------------------------------------------------
class CMyServerSocket : public CAsyncSocketvoid CMyServerSocket::OnAccept(int nErrorCode)
{
//侦听到连接请求,调用Accept函数
CNewSocket* pSocket = new CNewSocket();
if (Accept(*pSocket))
pSocket->AsyncSelect(FD_READ);
else
delete pSocket;
}
---------------------------------------------------
CMyServerSocket m_srvrSocket;void CRunDlg::OnButton1()
{
if (m_srvrSocket.m_hSocket==INVALID_SOCKET)
{
BOOL bFlag=m_srvrSocket.Create(1088,SOCK_STREAM,FD_ACCEPT);
if (!bFlag)
{
AfxMessageBox("Socket Error!");
m_srvrSocket.Close();
PostQuitMessage(0);
return;
}
}
//“侦听”成功,等待连接请求
if (!m_srvrSocket.Listen(1))
{
int nErrorCode = m_srvrSocket.GetLastError();
if (nErrorCode!=WSAEWOULDBLOCK)
{
AfxMessageBox("Socket Error!");
m_srvrSocket.Close();
PostQuitMessage(0);
return;
}
}
}-------------------------------------
上边的这段代码,是我写的一个简单的VC的Socket通讯的服务器部分.
我现在遇到的问题是,当客户端发送数据过来的时候,第一次发送,Server端收到,客户端也收到回应.但是第二次之后再发送数据,Server端就收不到了.
这是怎以回事呢?
{
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
m_ListBox.InsertString(0,m_szBuffer); // 将收到的消息再发回
AsyncSelect(FD_WRITE);
}void CNewSocket::OnSend(int nErrorCode)
{
Send(m_szBuffer,m_nLength,0);
}
------------------------------------------------
class CMyServerSocket : public CAsyncSocketvoid CMyServerSocket::OnAccept(int nErrorCode)
{
//侦听到连接请求,调用Accept函数
CNewSocket* pSocket = new CNewSocket();
if (Accept(*pSocket))
pSocket->AsyncSelect(FD_READ);
else
delete pSocket;
}
---------------------------------------------------
CMyServerSocket m_srvrSocket;void CRunDlg::OnButton1()
{
if (m_srvrSocket.m_hSocket==INVALID_SOCKET)
{
BOOL bFlag=m_srvrSocket.Create(1088,SOCK_STREAM,FD_ACCEPT);
if (!bFlag)
{
AfxMessageBox("Socket Error!");
m_srvrSocket.Close();
PostQuitMessage(0);
return;
}
}
//“侦听”成功,等待连接请求
if (!m_srvrSocket.Listen(1))
{
int nErrorCode = m_srvrSocket.GetLastError();
if (nErrorCode!=WSAEWOULDBLOCK)
{
AfxMessageBox("Socket Error!");
m_srvrSocket.Close();
PostQuitMessage(0);
return;
}
}
}-------------------------------------
上边的这段代码,是我写的一个简单的VC的Socket通讯的服务器部分.
我现在遇到的问题是,当客户端发送数据过来的时候,第一次发送,Server端收到,客户端也收到回应.但是第二次之后再发送数据,Server端就收不到了.
这是怎以回事呢?
解决方案 »
- 求合并视频文件的代码(在线等)。。。
- vc6读写webservice时如何传递结构体参数
- 高出请支招:Ole嵌入,如何实现这个和word、excel类似的功能
- 如何获取windows注销/切换用户消息?急!各位老大帮忙
- 关于 GetWindowTextA的问题
- 如何把CString ps:"12345“ 转成 int
- clistctrl 任意列 非首列 添加checkbox
- 怎样得到一个线程的状态?(是挂起还是在运行,谢谢了)
- ************急救*************怎么控制光标在一个EDIT BOX里的任意一个位置!
- 不看后悔一辈子,哈哈!!!
- 关于bind的问题?
- 开发ActiveX控件使用MFC和ATL哪个更好呢?
但告诉你个检查方法,那就是用netstat -a 看看“第二次”通讯时这两个程序的网络状态。
我估计你的客户端里出了问题。
{
................
}存在死循环问题,解决方法可以使用多线程,已经离题故在此不详细介绍。
te