我想做一个小的程序。就是在客户端发出一个命令。将些命令传给服务器端。然后在服务器端给予响应,并做出相应的处理,如发送数据?  

解决方案 »

  1.   

    建一个socket,用于传输命令就行;
    如果想发送数据;可再建一个数据通道,专门处理大量数据的传输;
      

  2.   

    你在服务器端要做解析呀;我也没啥做数据库;就是针对你这个问题;
    比如说服务器的一个函数DealCommand(string a);
    命令通道受到数据后,用一个函数处理受到的命令,看对应哪个字符串,然后执行相应的动作;
      

  3.   

    服务器端用两个socket,一个用来Lisen,当收到Accept消息后,建立另一个socket来接收信息OnReceive
    void CListenSoc::OnAccept(int nErrorCode) 
    {
    CSocket::OnAccept(nErrorCode);
    if(nErrorCode!=0){
    AfxMessageBox("cannot accept listen");
    return;
    }
    else{
    m_dlg->AcceptConnect();
    }
    void CServerDlg::AcceptConnect()
    {
       
    s_Server=new CServerSocket(this);   if(!m_ListenSocket->Accept(*s_Server))
       {
       AfxMessageBox("Cannot accept connect!");
       }}
    void CServerSocket::OnReceive(int nErrorCode) 
    { if(!m_dlg->GetMessage2())
    AfxMessageBox("error");
    CSocket::OnReceive(nErrorCode);
    }
    bool CServerDlg::GetMessage2()
    {
    char buff[1000];
    int count;
    count=s_Server->Receive(buff,1000);
    buff[count]=0;
    m_str+=buff;
    m_str+=_T("\r\n");
    UpdateData(0);
    return true;
    }
    }
    客户端发送Send
    void CMyclientDlg::OnButtonSend() 
    {
    UpdateData();
    int n;
    char message[1000];
    CString strTemp=m_strName+": "+strMsg;
    n=strTemp.GetLength();
    //message=new char(n+1);
    sprintf(message,"%s",strTemp.GetBuffer(n));
    message[n]=0;
    if (sClient->Send(message,n+1)==(n+1))
    {
    TRACE("成功!!!");
    }
    else
    {
    AfxMessageBox("网络传输错误!!!");
    }
    }
      

  4.   

    这个只是实现通信啊。不能区分开什么是数据,什么是命令的。
    ----------------------
    你设计个结构体丢过去就好了,服务端接收后再读出来 
    人家只是给你个DEMO