抢分啊~~~~~,关于CSocket的简单奇怪的问题!!

slihai 2001-06-04 11:52:00
我在一个扩展DLL中,有这样的程序段:
CSocket *m_psock;

m_psock=new CSocket();

if(!m_psock->Create()){
AfxMessageBox("Create Error!");
}
AfxMessageBox("Pass Create");
if(!m_psock->Connect("192.80.2.133",PORT)){
AfxMessageBox("Connect Error!");
}
else{
m_psock->Send(&TheEvent,sizeof(CEventData),0);

}

为什么运行到Create时出错??而且忽略错误后信息还可以发出去?
请大虾们指教!!

...全文
229 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
kook 2001-06-04
  • 打赏
  • 举报
回复
不要参数,写在创建套接字之前
//也可以写WSAStartup,但要烦些,这样就可以
slihai 2001-06-04
  • 打赏
  • 举报
回复
To:happydeer
初始化过程不是自动完成的吗??
把你说的那段代码放在哪里????

To:kook
同上,里边的参数怎么设置?
greenyard 2001-06-04
  • 打赏
  • 举报
回复
ASSERT(afxCurrentInstanceHandle != NULL
这就是afxwin1.inl中的代码
所以happydeer(乖乖小鹿)说的对
masterlee 2001-06-04
  • 打赏
  • 举报
回复
首先在app中初始化:
SockApp::InitInstance()
{
BOOL bInit = COleControlModule::InitInstance();

if (bInit)
{
if (! AfxSocketInit())
{
AfxMessageBox("Socket init failure!");
return FALSE;
}
}

return bInit;
}

然后在使用:
slihai 2001-06-04
  • 打赏
  • 举报
回复
To:kook

这个调用放在什么位置??里边的参数设置成什么??
happydeer 2001-06-04
  • 打赏
  • 举报
回复
估计没有初始化:
if (!AfxSocketInit())
{
AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
return FALSE;
}
slihai 2001-06-04
  • 打赏
  • 举报
回复
"try removing :m_psock=new CSocket(); "

那指针不空了吗???不可能吧!
kook 2001-06-04
  • 打赏
  • 举报
回复
AfxSocketInit
slihai 2001-06-04
  • 打赏
  • 举报
回复
kook
问题中写的就是完整的代码段,还需要做什么其他的工作吗??
clack 2001-06-04
  • 打赏
  • 举报
回复
try removing :m_psock=new CSocket();
kook 2001-06-04
  • 打赏
  • 举报
回复
是否没有初始化?
slihai 2001-06-04
  • 打赏
  • 举报
回复
不灵啊!!!他说什么:
Debug Assert Failed!
...

File:afxwin1.inl
Line:19
......
huangbeyond 2001-06-04
  • 打赏
  • 举报
回复
if(m_psock->Create()!=0)
试试。
flywhc 2001-06-04
  • 打赏
  • 举报
回复
CAsyncSocket::Create
BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL );

如果你用阻塞(none-blocking)的socket,那么应该:
lEvent=0

还是不要用CSocket啦,其实winsock的常用sdk api总共就那么几个,用api函数多简单
ccf123 2001-06-04
  • 打赏
  • 举报
回复
WSADATA wd;
WsaStartup(MAKEWORD(2,2),&wd);
happydeer 2001-06-04
  • 打赏
  • 举报
回复
应该在App::InitInstance()中进行上述的Socket初始化。
slihai 2001-06-04
  • 打赏
  • 举报
回复
加了AfxSocketInit也不灵光,我绝望了。
ReganCai 2001-06-04
  • 打赏
  • 举报
回复
没有初始化!Socket Create前必须AfxSocketInit!
slihai 2001-06-04
  • 打赏
  • 举报
回复
哎!!全部失灵!!
为什么基于对话框时就可以用呢!!
kook 2001-06-04
  • 打赏
  • 举报
回复
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib")
加载更多回复(3)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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