SOCKET 句柄问题

mxj22 2007-05-09 09:40:58
我在利用SOCKET 句柄进行send发送数据时出现错误:就是10038的错误,所这个SOCKET无效,我不知道怎么解决帮帮忙:
SOCKET SerSoc;
SerSoc=(SOCKET)m_hComm;

int nRet=send(SerSoc,pstrBuf,nLengthTmp+1,0);
DWORD errCheck=WSAGetLastError();
if(nRet==SOCKET_ERROR)
{
AfxMessageBox("Error in Sending");
}
上面的m_hComm 是在头函数定义是方便不同函得到同一个SOCKET,m_hComm的定义为:
HANDLE m_hComm;
在另一个函数赋了m_hComm=(HANDLE)SerSoc;
...全文
270 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
csuxiong 2007-05-10
  • 打赏
  • 举报
回复
调试发现m_hComm=(HANDLE)SerSoc有问题没?
SerSoc和hComm的值相同么?
goodmilk 2007-05-10
  • 打赏
  • 举报
回复
connect时还没有问题呢,send就不行了,应该是m_hComm=(HANDLE)SerSoc;的问题。
goodmilk 2007-05-10
  • 打赏
  • 举报
回复
在一个非套接字上尝试了一个操作。
_________________________________
初始化 WSAStartup
我感觉是socket有问题,你为什么不设一个全局变量的SOCKET,为什么一定要存在HANDLE里?
mxj22 2007-05-09
  • 打赏
  • 举报
回复
调用了,我先在一个函数里是这样做的
STDMETHODIMP SMSClient::OpenServer(BSTR strHostName, BSTR strPort, int *result)

  SOCKET SerSoc;
  SerSoc=socket(2,SOCK_STREAM,0);
  if(connect(SerSoc,(LPSOCKADDR)&sockAddr,sizeof(sockAddr))==SOCKET_ERROR)
  {
AfxMessageBox("Error in Connecting to Specified Port");
return 0;
  }
  m_hComm=(HANDLE)SerSoc;
  ........
 }
在另一个函数就取这个m_hComm句柄

STDMETHODIMP SMSClient::SendMsg(BSTR strRecieveNum, BSTR strName, BSTR strContent, int *result)
{
SOCKET SerSoc;
SerSoc=(SOCKET)m_hComm;
int nRet=send(SerSoc,pstrBuf,nLengthTmp+1,0);
DWORD errCheck=WSAGetLastError();
if(nRet==SOCKET_ERROR)//会出错
{
AfxMessageBox("Error in Sending");
}

}
我是在ATL编写的COM组件里编写这些函数
Jazzlover 2007-05-09
  • 打赏
  • 举报
回复
调用 SerSoc = socket(...) 了吗?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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