我在用SOCKET编写聊天程序时(MFC对话框为基础),希望服务器端和客户端都能够发送和接收信息
代码大致如下:
服务器端
BOOL Cserdlg::net_Init()  //完成套接字初始化工作
{
         UpdateData(true);
WORD wversion;
WSADATA wsadata;
wversion=MAKEWORD(1,1);
int ret=WSAStartup(wversion,&wsadata);
         if(ret!=0)
{
AfxMessageBox("fail");
return false;
}
else
{
AfxMessageBox("success");
} serversock=socket(AF_INET,SOCK_STREAM,0);
         sockaddr_in addr;
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(INADDR_ANY);
addr.sin_port=htons(m_Port);

    if(bind(serversock,(struct sockaddr*)&addr,sizeof(sockaddr))==SOCKET_ERROR)
{
AfxMessageBox("绑定失败");
return false;
}
    if(listen(serversock,5)==SOCKET_ERROR)

{
AfxMessageBox("sock error");
int ErrorCode=GetLastError();
return false;

}
    return true;}void Cserdlg::OnButton2()      //开始等待接收Connect工作 
{

if ( net_Init() == FALSE)
{
AfxMessageBox("初始化失败");
}
else
{
accsock=accept(serversock,NULL,NULL);
if(accsock==INVALID_SOCKET)

{
int ErrorCode=WSAGetLastError();
AfxMessageBox("acc fail");
}
else
    {
         memset(buf,0,sizeof(char)*1024);
recv(accsock,buf,1024,MSG_PEEK);
SetDlgItemText(IDC_EDIT2,buf);
}
}

}void Cserdlg::OnButton1()     //关闭工作 
{
closesocket(serversock);
closesocket(accsock);

WSACleanup();
// TODO: Add your control notification handler code here

}void Cserdlg::OnButton3()       //发送信息
{

CString str;

GetDlgItemText(IDC_EDIT1,str);
sprintf(buf2,"%s",str);
AfxMessageBox(buf2);
send(accsock,buf2,sizeof(buf2),MSG_DONTROUTE);}
客户端:
BOOL Cclidlg::OnInitDialog() 
{
CDialog::OnInitDialog();

if(net_init()==false)
{
AfxMessageBox("初始化失败");
return false;
}
else
{
sock=socket(AF_INET,SOCK_STREAM,0);
sockaddr_in addr;
memset(&addr,0,sizeof(sockaddr_in));
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
addr.sin_port=htons(5001);
    if(connect(sock,(sockaddr*)&addr,sizeof(sockaddr_in))==SOCKET_ERROR)
{
int nError=GetLastError();
AfxMessageBox("connect error");
return false;
}
memset(buf2,0,sizeof(char)*1024);
recv(sock,buf2,1024,MSG_PEEK);
SetDlgItemText(IDC_EDIT2,buf2);    //使得到的消息显示在组件中
}

return TRUE;  
}void Cclidlg::OnButton1()     //发送信息按钮

CString str;
char buf[100];
GetDlgItemText(IDC_EDIT1,str);
sprintf(buf,"%s",str);
AfxMessageBox(buf);
send(sock,buf,sizeof(buf),MSG_DONTROUTE);

}BOOL Cclidlg::net_init()       //完成初始化工作
{
WORD wversion;
WSADATA wsadata;
wversion=MAKEWORD(1,1);
int err;
err=WSAStartup(wversion,&wsadata);
if(err!=0)
{
return false;
}
return true;
}
运行时系统报错 恳请高手帮忙看看是什么问题???