UINT MyThreeadProc(LPVOID lParam)
{
Cconnect_sDlg *pDlg = (Cconnect_sDlg*) lParam;
sockConn = accept( sockSrv ,(SOCKADDR*)&addrClient , &len );
char sendBuf[50];
char revbuffer[50];
sprintf_s(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));//组合消息发送出去
send(sockConn,sendBuf,strlen(sendBuf)+1,0);//发送消息到客户端
Sleep(10);
while(1)
{ //发送
if ( flag_user_message == 1 )
{
CString2Char(str_temp_send_message,sendBuf);
send(sockConn,sendBuf,strlen(sendBuf)+1,0);//发送消息到客户端
Sleep(10);
flag_user_message = 0 ;
}
//接收
Sleep(3);
memset(revbuffer,0,sizeof(revbuffer));
recv(sockConn,revbuffer,1024,0);
if (revbuffer[0] != 0 )
{
temp_str_recvbuffer = revbuffer;
temp_str_recvbuffer += "\r\n";
pDlg->m_talkwin += temp_str_recvbuffer;
PostMessage(pDlg->m_hWnd, updateUI , 0 , 0 );
} }
closesocket(sockConn);
return 0;
}
为什么接收正常 而发送却错误呢 b的返回代码 为 10038 这个是为什么呢?
{
Cconnect_sDlg *pDlg = (Cconnect_sDlg*) lParam;
sockConn = accept( sockSrv ,(SOCKADDR*)&addrClient , &len );
char sendBuf[50];
char revbuffer[50];
sprintf_s(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));//组合消息发送出去
send(sockConn,sendBuf,strlen(sendBuf)+1,0);//发送消息到客户端
Sleep(10);
while(1)
{ //发送
if ( flag_user_message == 1 )
{
CString2Char(str_temp_send_message,sendBuf);
send(sockConn,sendBuf,strlen(sendBuf)+1,0);//发送消息到客户端
Sleep(10);
flag_user_message = 0 ;
}
//接收
Sleep(3);
memset(revbuffer,0,sizeof(revbuffer));
recv(sockConn,revbuffer,1024,0);
if (revbuffer[0] != 0 )
{
temp_str_recvbuffer = revbuffer;
temp_str_recvbuffer += "\r\n";
pDlg->m_talkwin += temp_str_recvbuffer;
PostMessage(pDlg->m_hWnd, updateUI , 0 , 0 );
} }
closesocket(sockConn);
return 0;
}
为什么接收正常 而发送却错误呢 b的返回代码 为 10038 这个是为什么呢?
解决方案 »
- 再次肯求大家帮帮忙,关于BCGControl 的一个问题
- 怎样在listview控件的某一列中插入图片?
- 显示bmp图像时崩溃,在线等待
- 紧急求助!——如何打包发行Access+DAO操作的系统???
- word文档(.Doc)怎么转化成文本文件(.txt)啊
- 请问关于用VC进行数据处理的问题?
- “error C2533: 构造函数不能有返回类型”,怎么回事?
- 怎么捕获 PAGEUP PAGEDOWN 按键消息?
- 菜单的动态搜索的实现
- ISAPI如何发email?有可利用的API吗?请高手赐教!不胜感谢!
- WM_MOUSEMOVE是不是会触发重绘??
- 以前VC开发的CS客户端的系统,想封装为Web Service,还是用VC开发,难度是不是很大?
有问题的地方:
1.accept的返回值可能是无效的,这点你没判断
2.socket被关闭了,这点从你的代码里看好像不会
3.外部什么地方调用了wsacleanup函数所以,你先把代码写规范一点,这样方便找出问题
sockConn = accept( sockSrv ,(SOCKADDR*)&addrClient , &len );
if(sockConn == INVALID_SOCKET)
{
int err = WSAGetLastError();
printf("accept return INVALID_SOCKET, WSAGetLastError=%d", err);
return;
}ret = send(sockConn,sendBuf,strlen(sendBuf)+1,0);
if(ret == SOCKET_ERROR)
{
int err = WSAGetLastError();
printf("send return SOCKET_ERROR, WSAGetLastError=%d", err);
return;
}ret = recv(sockConn,revbuffer,1024,0);
if(ret == SOCKET_ERROR)
{
int err = WSAGetLastError();
printf("recv return SOCKET_ERROR, WSAGetLastError=%d", err);
return;
}if(ret == 0)
{
printf("connection closed");
return;
}