在线高分求解。为什么会出错,线程问题 Create()都出错的话,就应该是没有初始化socket DLL了。另外,多线程中使用CSocket可能会有无尽的麻烦。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1。请问怎样初始化socket2。为什么不在线裎中使用CSocket 的话,不需要初始化?谢谢,一顶给分 用AfxSocketInit();初始化不在线程中使用也需初始化 MFC的CSocket和CAsyncSocket类型在多线程下使用会有问题,建议使用window API CSocket对象不要跨线程传递就可以了。传递前Detach下一个SOCKET句柄再传过去Attach。 我是在线程内定义,int CSendFileTread::Run() { AfxSocketInit() CSocket ClientSocket; ClientSocket.Create();//这句出错 ClientSocket.Connect(m_strRemoteAddress,m_URemotePort); ClientSocket.Send("ddd",4); return CWinThread::Run();}AfxSocketInit()初始化也不行。 在线程里面调用Socket函数是需要初始化:按照MSDN的说法,初始化Winsock2.2这样做:BOOL InitSockDll(){ WORD wVersionRequested; WSADATA wsaData; wVersionRequested = MAKEWORD( 2, 2 ); if(WSAStartup(wVersionRequested,&wsaData)!=0) return FALSE; if(LOBYTE(wsaData.wVersion) != 2 ||HIBYTE(wsaData.wVersion) != 2) { WSACleanup( ); return FALSE; } return TRUE;} WSAStartup 初开始化成功,但还是不行 多线程中使用CSocket真的会有无尽的麻烦。 查看函数的返回代码,以确定是什么原因.GetLastError(). 你的CSendFileTread类是不是一个窗口线程类呢?如果不是,就不要在这个线程里用CSocket和CASyncSocket. m_ClientSocket.Create();看看返回什么值,是不是没有建立成功,下句对其调用出错 m_ClientSocket.Connect(m_strRemoteAddress,m_URemotePort); socket缓存当中的内容,是存在于内核空间还是用户空间? UDP多线程聊天如何实现? 默认按键的消息循环? MFC多文档程序 打开一个文档 当弹出文件对话框后 双击打开与选中后用按钮打开有什么区别 ◤[招聘]网游C++程序员,工作地点成都◥ 请教:还有软件能把DLL文件转化为C的源代码阿??? vc多个费时操作如何分配到有限个线程中? 大家好,我刚学MFC不久,谁愿意做我的老师? 为什么别的FTP函数都可以,唯独FtpCommand不能,怎样才可以给FTP SERVER发送命令 talking about com 关于VC++命令按钮的位图问题 请问一个 socket 问题
2。为什么不在线裎中使用CSocket 的话,不需要初始化?
谢谢,一顶给分
不在线程中使用也需初始化
建议使用window API
int CSendFileTread::Run()
{
AfxSocketInit()
CSocket ClientSocket;
ClientSocket.Create();//这句出错
ClientSocket.Connect(m_strRemoteAddress,m_URemotePort);
ClientSocket.Send("ddd",4);
return CWinThread::Run();
}AfxSocketInit()初始化也不行。
按照MSDN的说法,初始化Winsock2.2这样做:
BOOL InitSockDll()
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );
if(WSAStartup(wVersionRequested,&wsaData)!=0)
return FALSE;
if(LOBYTE(wsaData.wVersion) != 2 ||HIBYTE(wsaData.wVersion) != 2)
{
WSACleanup( );
return FALSE;
} return TRUE;
}
GetLastError().
如果不是,就不要在这个线程里用CSocket和CASyncSocket.
,是不是没有建立成功,下句对其调用出错
m_ClientSocket.Connect(m_strRemoteAddress,m_URemotePort);