用socket从服务器端向客户端发送数据第二次发送总是异常
用socket从服务器端向客户端发送数据第二次发送总是错误
LRESULT CMainDlg::OnBnClickedButton2(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
int len=sizeof(SOCKADDR);
SOCKET sockConn=accept(ServerSocket,(SOCKADDR*)&m_sockServerAddr,&len);
inet_ntoa(m_sockServerAddr.sin_addr);
if(send(sockConn,"123",sizeof("123")+1,0) == SOCKET_ERROR)//Image\n[111;222;333]\nDone\n
{
MessageBox(_T("发送错误!"));
}
return 0;
}
------解决方案--------------------
LRESULT CMainDlg::OnBnClickedButton2(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
int len=sizeof(SOCKADDR);
SOCKET sockConn=accept(ServerSocket,(SOCKADDR*)&m_sockServerAddr,&len);
inet_ntoa(m_sockServerAddr.sin_addr);
if(send(sockConn,"123",sizeof("123")+1,0) == SOCKET_ERROR)//Image\n[111;222;333]\nDone\n
{
MessageBox(_T("发送错误!"));
}
return 0;
}
------解决方案--------------------
- C/C++ code
LRESULT CMainDlg::OnBnClickedButton2(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/) { int len=sizeof(SOCKADDR); static bool bIsAccepted = false; if(!bIsAccepted) { SOCKET sockConn=accept(ServerSocket,(SOCKADDR*)&m_sockServerAddr,&len); if( sockConn != INVALID_SOCKET ) { bIsAccepted = true; inet_ntoa(m_sockServerAddr.sin_addr); } } if(send(sockConn,"123",sizeof("123")+1,0) == SOCKET_ERROR)//Image\n[111;222;333]\nDone\n { MessageBox(_T("发送错误!")); } return 0; }