为什么我的SOCKET接收正常 无法发送呢 求解啊

UINTMyThreeadProc(LPVOIDlParam){Cconnect_sDlg*pDlg=(Cconnect_sDlg*)lParam;sockConn=ac... 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 这个是为什么呢?
展开
 我来答
泽兮如颜
2013-09-23 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:103万
展开全部
看了一下,10038说明你在非Socket上进行操作,我看你写的线程里面的 变量 sockConn 是一个全局变量,也就是说会随着客户端的connect变化,sockConn 的值变化了以后,就会出现10038的错误。
建议你的accept在线程外处理,每一个accept成功了之后再把socket的值传递到线程里面,这样就可以将值保留下来,不会产生100038这个错误。
深圳市容大彩晶科技有限公司
2024-11-20 广告
广告机代理优选容大彩晶,深圳市容大彩晶科技有限公司自2007年成立伊始,一直专注于液晶商用显示产品的技术研发及产品服务。公司依托具有自主研发能力、创新高效的技术团队,打造出行业优质商用液晶显示设备。容大彩晶产品涵盖商用液晶显示、多媒体广告机... 点击进入详情页
本回答由深圳市容大彩晶科技有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式