以下是程序的部分代码,连接正常为什么send的时候会说找不到m_hSock呢?
m_hSock = socket(AF_INET,SOCK_STREAM,6);
ASSERT(m_hSock != NULL);
m_addr.sin_family=AF_INET;
m_addr.sin_addr.S_un.S_addr=inet_addr(IP);
m_addr.sin_port=htons(port);
int ret=0;
int error=0;
ret=connect(m_hSock,(LPSOCKADDR)&m_addr,sizeof(m_addr));
if(ret==SOCKET_ERROR)
{
TRACE("Connect Error:%d\n",(error = WSAGetLastError() ));
return FALSE;
} ret=WSAAsyncSelect(m_hSock,m_hWnd,WM_P2PCLIEVENT,
FD_READ | FD_CLOSE |FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT);
if(ret==SOCKET_ERROR)
{
TRACE("WSAAsyncSelect Error:%d\n",( error = WSAGetLastError() ));
return FALSE;
}
WSADATA wsaData;
WORD version=MAKEWORD(1,1);
int ret=WSAStartup(version,&wsaData);
TRACE("WSAStartup return value ret=%d\n",ret);
if(ret!=0)
TRACE("WSAStartup Error!\n"); if(m_hSock==NULL)
{
TRACE("m_hSock==NULL");
return FALSE;
} ret = send(m_hSock,buf,10,0);//ret返回10038
m_hSock = socket(AF_INET,SOCK_STREAM,6);
ASSERT(m_hSock != NULL);
m_addr.sin_family=AF_INET;
m_addr.sin_addr.S_un.S_addr=inet_addr(IP);
m_addr.sin_port=htons(port);
int ret=0;
int error=0;
ret=connect(m_hSock,(LPSOCKADDR)&m_addr,sizeof(m_addr));
if(ret==SOCKET_ERROR)
{
TRACE("Connect Error:%d\n",(error = WSAGetLastError() ));
return FALSE;
} ret=WSAAsyncSelect(m_hSock,m_hWnd,WM_P2PCLIEVENT,
FD_READ | FD_CLOSE |FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT);
if(ret==SOCKET_ERROR)
{
TRACE("WSAAsyncSelect Error:%d\n",( error = WSAGetLastError() ));
return FALSE;
}
WSADATA wsaData;
WORD version=MAKEWORD(1,1);
int ret=WSAStartup(version,&wsaData);
TRACE("WSAStartup return value ret=%d\n",ret);
if(ret!=0)
TRACE("WSAStartup Error!\n"); if(m_hSock==NULL)
{
TRACE("m_hSock==NULL");
return FALSE;
} ret = send(m_hSock,buf,10,0);//ret返回10038
解决方案 »
- Dialog中增加自己设计的对话框后为其增加新类的问题?
- 用csocket发送信息的时候,如果是自定义的结构,直接send就可以了,可是xml格式的数据该怎么处理阿
- bho技术在其他ie内核浏览器中的疑问
- 链接异常,帮忙看看。
- BYTE *m_pBuf = new BYTE[BUFFERSIZE<<1]; 是什么意思?
- 一个sdi程序,如何切换两个工具栏呀?诚恳指教!!!
- 请问,能否用udp来访问http协议的网站
- 数字转换为字符串的函数
- 请问 modifyStyle 放在哪儿有效?
- 为什么运行VCVARS32.BAT时总是提示"Out of environment space"?如何解决?
- 怎么让控件显示在dc画的图上面,dc画图时总是把控件覆盖
- 请问一个程序员考题问题.......
WORD version=MAKEWORD(1,1);
int ret=WSAStartup(version,&wsaData);
TRACE("WSAStartup return value ret=%d\n",ret);
if(ret!=0)
TRACE("WSAStartup Error!\n");
应该放在在最开始时吧
{
TRACE("m_hSock==NULL");
return FALSE;
}
如果不是连续的(即在两个函数中实现),检查一下构造函数与发送数据函数之间执行的代码.
{
TRACE("m_hSock==NULL");
return FALSE;
}