服务端:
1、在初始对话框时已经初始了winsock;
2、开始服务的代码:
   void CServerDlg::OnStartServer() 
   {

m_lis=socket(AF_INET,SOCK_STREAM,0);
if(m_lis==INVALID_SOCKET)
{
AfxMessageBox("监听套接字创建失败!");
return;
}
m_addr.sin_addr.s_addr=htonl(INADDR_ANY);
m_addr.sin_family=AF_INET;
m_addr.sin_port=1080;
         int r=bind(m_lis,(sockaddr*)&m_addr,sizeof(m_addr));
if(r==SOCKET_ERROR)
         {
AfxMessageBox("绑定套接字失败!");
return;
}
listen(m_lis,5);
int len=sizeof(m_addr);
m_con=accept(m_lis,(sockaddr*)&m_addr,&len);
if(m_con==INVALID_SOCKET)
{
AfxMessageBox("建立连接失败!");
return;
}
   }
3、显示远端客户的IP:
   void CServerDlg::OnButton2() 
   {
CString str=inet_ntoa(m_addr.sin_addr);
AfxMessageBox(str);
   }
注:m_addr是对话框的成员变量。
客户端:
1、连接服务器
   void CClientDlg::OnButton1() 
   {

m_con=socket(AF_INET,SOCK_STREAM,0);
if(m_con==INVALID_SOCKET)
{
AfxMessageBox("创建套接字失败!");
return;
}
m_addr.sin_addr.s_addr=inet_addr("218.201.40.212");
m_addr.sin_family=AF_INET;
m_addr.sin_port=1080;
int r=connect(m_con,(sockaddr*)&m_addr,sizeof(m_addr));
         if(r==SOCKET_ERROR)
         {
AfxMessageBox("连接服务器失败!");
return;
}
   }
注:218.201.40.212是公网上的固定IP。
请问:上面的程序在局域网内测试正常,可以显示出客户的IP,但将服务端放到218.201.40.212上时,客户就不能连接服务器了,服务端象死机一样,动弹不得,谁帮我完善一下上面的代码,使之能正常运行,解决问题立即给分。