第一次先启动server ,在启动client 可以相互发送、接受数据;
socket client 再次运行,与server连接不上(CPU100%)???
(server、client程序在同一台机器)BOOL CCOM_MFCDlg::OnInitDialog()
{
CDialog::OnInitDialog(); CSocket sockListen;
sockListen.Create(6801,SOCK_STREAM,"127.0.0.1");            sockListen.Bind(6801,"127.0.0.1");               
sockListen.Listen(5);
sockListen.Accept(m_sockRecv);    
sockListen.Close();  

char szRecv[20];
int iRecv =m_sockRecv.Receive(szRecv,20,0);             
if(iRecv>=0 && flag==0)
{
szRecv[iRecv]='\0';
m_szRecv=szRecv;
UpdateData(FALSE);
flag=1;
}
TRACE0(" received:");
TRACE0(m_szRecv);
  m_rxd="rec "+m_szRecv;
UpdateData(false);
returnData();

解决方案 »

  1.   

    客户端创建时不要指定段口号,直接Create()就是拉
      

  2.   

    不行
    俺的client是vb编的,无Create();
    client不指定端口号,第一次就连接不上,现象依旧。
      

  3.   

    客户端的代码 sock_s.RemoteHost = "127.0.0.1"
     sock_s.RemotePort = 6801    '2000   '
     sock_s.Connect
     sock_s.SendData ("s")
      

  4.   

    当然连接不上了,第二次连接时,服务器端第一次用于接收连接请求的socket(m_sockRecv)还没关闭呢。要么你在服务器端定义一个socket数组,要么客户端下线时向服务器发送一个下线通知,由服务器close掉
      

  5.   

    服务器端第一次用于接收连接请求的socket(m_sockRecv)关闭 不是用 ???
    sockListen.Close();  
      

  6.   

    同一端口不能连接不同的SOCKET吧。
    需要建立新的SOCKET。
    请指教。
      

  7.   

    好像是这个原因,同一个端口创建不同的Socket会出错的。