静态连接为什么会出错? 高手帮忙

kvk 2002-05-04 09:11:04
分数不是问题,各位高手帮帮忙
线程函数里的代码,以动态连接没问题,静态就出问题了
CRealMsg *msg=(CRealMsg*)p;
CString strip;
strip.Format("%s",msg->strIP);
strip.TrimRight();
CCriticalSection sec;
sec.Lock();
CSendSock revsock;
revsock.Create(htons(9999),SOCK_DGRAM,0);//这里出错//ACCESS VOLATION
revsock.Bind(htons(9999),strip);
sec.Unlock();
//revsock.AsyncSelect(0);


/*
sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_port=htons(9999);
addr.sin_addr.s_addr=inet_addr(strip);
revsock=socket(AF_INET,SOCK_DGRAM,0);
if(revsock==INVALID_SOCKET)
{AfxMessageBox("create failed");return 1;}
if(SOCKET_ERROR==bind(revsock,(const sockaddr*)&addr,
sizeof(addr)))
{AfxMessageBox("bind failed");return 1;}
DWORD value=1000;
ioctlsocket(revsock,FIONBIO,&value);
char* name;
name=inet_ntoa(addr.sin_addr);
CString strfff;
strfff.Format("%s",name);
AfxMessageBox(strfff);
*/
//bool bb=true;
//::setsockopt(revsock,SOL_SOCKET,SO_BROADCAST,(char*)&bb,sizeof(bool));
CRealMsg *pmsg=new CRealMsg;
int nrev=0;

sec.Lock();
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();
ASSERT(pMain);
sec.Unlock();
//int nlen=sizeof(addr);
while(!nReQuery)
{
nrev=revsock.Receive(pmsg,sizeof(CRealMsg));//recv(revsock,(char*)pmsg,sizeof(CRealMsg),0);//revsock.Receive((void*)pmsg,sizeof(CRealMsg));
if(SOCKET_ERROR==nrev||nrev==0)
{
DWORD dError=GetLastError();
//ReportError(dError);
continue;
}
else
{
if(strcmp(pmsg->strMess,"logo")==0)
{
pMain->SendMessage(WM_ADDUSER,(WPARAM)(pmsg),0);

}
else if(strcmp(pmsg->strMess,"ungo")==0)
{
pMain->SendMessage(WM_DELUSER,(WPARAM)pmsg,0);
}
ZeroMemory(pmsg,sizeof(CRealMsg));
}

}
::closesocket(revsock.m_hSocket);
delete pmsg;
delete msg;

return 1;
}
...全文
70 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
aixiaobai 2002-05-04
  • 打赏
  • 举报
回复
试着用release模式来编译一下试试
应该可以的
kvk 2002-05-04
  • 打赏
  • 举报
回复
CSendSock是我从CAsyncSocket派生的
关键是为什么静态连接会出错!!!!
我直接用API(那段注释过的代码)没错,但没有用
我把RevSock定义成全局变量,也出错,
天塌下来了,我一天都在调试这个程序
  • 打赏
  • 举报
回复
说实话,CSendSock是什么,我以前没有用过。我还是建议你用winsock先初始化,然后在发送和接收数据。
kvk 2002-05-04
  • 打赏
  • 举报
回复
我连接了 但好像没关系
kvk 2002-05-04
  • 打赏
  • 举报
回复
停在在这里
void* CMapPtrToPtr::GetValueAt(void* key) const
// find value (or return NULL -- NULL values not different as a result)
{
if (m_pHashTable == NULL)/// 这里
return NULL;

UINT nHash = HashKey(key) % m_nHashTableSize;

// see if it exists
CAssoc* pAssoc;
for (pAssoc = m_pHashTable[nHash]; pAssoc != NULL; pAssoc = pAssoc->pNext)
{
if (pAssoc->key == key)
return pAssoc->value;
}
return NULL;
}
edrftgyh 2002-05-04
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
你是不是没有连接ws2_32.lib这个静态库呀。
kvk 2002-05-04
  • 打赏
  • 举报
回复
unhandled exception in chat.exe:0x0000005;Access Violation
请务必帮我一下,谢谢
VCpioner 2002-05-04
  • 打赏
  • 举报
回复
具体一点!!
  • 打赏
  • 举报
回复
写出你的问题提示。

16,471

社区成员

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

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

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