我猜想首先客服人员登陆后会在数据库写入自己的信息(ID),那么客户端就能读取数据库得到客服人员的名字了。
客户与客服提交的信息可能是提交到一个 Web Services(服务端)来进行处理。但现在有两个问题不太明白:1.客户端如何发信息到客服端: 
这个我还能猜到一些,一种方法是把信息与客服名称写入数据库,客服只要读取他对应名字的信息就行了。可问题是当信息写入时数据库时,数据库如何通知服务端。
于是我又想,也许客服端是与服务端建立类似Winsock的连接,这样就可把客户的信息转发到客服了。2.客服端如何发信息到客户端:这个我就完全没思路了,因为http是没有连接状态的,客服端如何识别并回信息给客户呢?请大家给个思路,特别是有这方面经验的指点一下。不用代码,只要思路即可。谢谢!

解决方案 »

  1.   

    用Ajax去查询回复,Ajax没有Post,看上去就像在聊天一样,但是其实不是时时的。
      

  2.   

    //"开始"按钮事件   private void button1_Click(object sender, System.EventArgs e) {    //取得预保存的文件名    string fileName=textBox3.Text.Trim();    //远程主机    string hostName=textBox1.Text.Trim();    //端口    int port=Int32.Parse(textBox2.Text.Trim());    //得到主机信息    IPHostEntry ipInfo=Dns.GetHostByName(hostName);    //取得IPAddress[]    IPAddress[] ipAddr=ipInfo.AddressList;    //得到ip    IPAddress ip=ipAddr[0];    //组合出远程终结点    IPEndPoint hostEP=new IPEndPoint(ip,port);    //创建Socket 实例    Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);    try    {    //尝试连接    socket.Connect(hostEP);    }    catch(Exception se)    {    MessageBox.Show("连接错误"+se.Message,"提示信息    ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);   }   //发送给远程主机的请求内容串   string sendStr="GET / HTTP/1.1\r\nHost: " + hostName +   "\r\nConnection: Close\r\n\r\n";    //创建bytes字节数组以转换发送串    byte[] bytesSendStr=new byte[1024];    //将发送内容字符串转换成字节byte数组    bytesSendStr=Encoding.ASCII.GetBytes(sendStr);   try   {   //向主机发送请求   socket.Send(bytesSendStr,bytesSendStr.Length,0);   }   catch(Exception ce)    {    MessageBox.Show("发送错误:"+ce.Message,"提示信息    ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);    }    //声明接收返回内容的字符串    string recvStr="";    //声明字节数组,一次接收数据的长度为1024字节    byte[] recvBytes=new byte[1024];    //返回实际接收内容的字节数    int bytes=0;   //循环读取,直到接收完所有数据   while(true)   {   bytes=socket.Receive(recvBytes,recvBytes.Length,0);   //读取完成后退出循环   if(bytes〈=0)   break;   //将读取的字节数转换为字符串   recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);   }   //将所读取的字符串转换为字节数组   byte[] content=Encoding.ASCII.GetBytes(recvStr);    try    {    //创建文件流对象实例    FileStream fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);   //写入文件   fs.Write(content,0,content.Length);   }   catch(Exception fe)    {    MessageBox.Show("文件创建/写入错误:"+fe.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);    }    //禁用Socket    socket.Shutdown(SocketShutdown.Both);    //关闭Socket    socket.Close();    }    } 
    绿绦工作室
      

  3.   

    客户端发送信息到服务器端,客户端通过web services 获取信息
    看一个具体事例参考
      

  4.   

    客户端是浏览器
    就像这个http://www.ewinke.com/
      

  5.   

    发送是用ajax,但问题是服务端如何回复(非即时)
      

  6.   

    TO:wumingwei_123
    谢谢,但你那个是C/s的Winsock ,不知如何发回 客户端(浏览器)B/S
      

  7.   

    也就是说当客户端向服务端提交完信息,如果服务端即时回复的(如Response.write,因为在同一个http请求回复中),那么客户端(浏览器)当然可收到信息。
    可问题时,服务端收到信息后,并没有立即在同一个http请求中回复,等到客服工作人员回复时,服务端才打算回信息给客户端;这时服务端根本就不认识客户端(因为客户端是浏览器,如果是C/s桌面程则没问题)。如果回复呢?