用socket从服务器端向客户端发送数据第二次发送总是错误

skwayumi 2012-09-21 02:14:41
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;
}
...全文
59 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
skwayumi 2012-09-21
  • 打赏
  • 举报
回复
已经解决了,不过不是这个办法
skwayumi 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
C/C++ code


LRESULT CMainDlg::OnBnClickedButton2(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
int len=sizeof(SOCKADDR);
static bool bIsAccepted = false;
……
[/Quote]

好像不行,根据你的改了下也有问题sockConn != INVALID_SOCKET 总是1

每点击按钮执行一次操作,就会accept一次,那么已经连接好的,也会accept一次,就会出错,根据这个改好了,不过还是有弊端
Damn_boy 2012-09-21
  • 打赏
  • 举报
回复

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;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧