求解,socket编程中的recv和accpet一定要在一个类吗?
rt,我想做一个聊天软件,有一个主界面,里面有添加的好友,都是一些ip。程序启动时就把程序当做服务器,可以接受其他客户端的连接,当连接到达时弹出聊天窗口,这样的话,recv()和accpet()就不在一个类里面,结果老是出错,请问各位高手有什么解决办法?
[解决办法]
不在一个线程都可以,不在一个类里很正常呀,出错,应该是你程序某个地方写错了
[解决办法]
为什么我accept之后程序就会死掉呢?下面是我的代码
BOOL CChat::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CChat * dlg = (CChat *)AfxGetApp()->GetMainWnd();
char name[80];
CString IP;
hostent* pHost;
gethostname(name, 128);//获得主机名
pHost = gethostbyname(name);//获得主机结构
IP = inet_ntoa(*(in_addr *)pHost->h_addr);
show_edit = (CEdit *)GetDlgItem(IDC_EDIT);
update("本机IP地址:" + IP);
int res;
char msg[1024];
while(1)
{
if( (res = recv(sock, msg, 1024, 0)) == -1 )
{
dlg->update("失去连接");
break;
}
else
{
msg[res] = '\0';
dlg->update("client:" + CString(msg));
}
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}