我想做一个TcpServer/TcpClient的多客户/服务端,现在有几个点请大家帮忙:
1、是不是服务端和客户端都得有TcpServer/TcpClient这两个控件?
2、当多个客户端同时请求时怎么进行处理。
请大家提供思路,谢谢!

解决方案 »

  1.   

    客户端有TcpClient
    服务器端有TcpServer就行了
    ServerSocket1.Components来确定客户是那个
      

  2.   

    客户端只放TcpClient,服务器端只放TcpServer的话,我从TcpClient发数据到TcpServer没问题,但是从TcpServer发数据到TcpClient能否实现呢?
      

  3.   

    当然可以,用ServerSocket1.Components确定发给谁,客户端只能联一个服务器,所以他read就可以了
      

  4.   

    用IDINDY里的IDTCPSERVER何IDTCPCLIENT,服务端支持多线程。解决多用户的最佳方案
      

  5.   

    TO fangjx(烟雨缥缈) :
    大侠能否说得更详细些
      

  6.   

    服务器端使用IDTCPSERVER,客户端使用IDTCPCLIENT。当客户发送请求到服务器时。IDTCPSERVER自动创建一个线程。你可以对这个线程进行控制。
    够详细了吧。
      

  7.   

    能说一下IDtcpserver.components怎么用吗?我一般是用一个Tlist在idtcpserver.onconnect来记录下来的。components怎么用能不能详细说一明一下,举个简单的程序段最好。
      

  8.   

    idtcpserver每建立一个连接时会创建一个线程,execute.你改那个函数就可以了。最重要的还是把所以连接枚的client连接的方法。一般是用一个Tlist把连接记录下来。断开时,把数据删除。我也是最近才学。我不知herofy和fangjx说的用components的方法是怎么样的。欢迎交流:QQ173257128
      

  9.   

    我也是用TLIST保存记录,没有数据交流的时候就让线程休眠
      

  10.   

    想问一下: herofy(雄鸡破晓)
    {
    当然可以,用ServerSocket1.Components确定发给谁,客户端只能联一个服务器,所以他read就可以了
    }
    为什么在我的TCPClient的Read事件中没反应?
      

  11.   

    楼上的问题我也碰到了,从TcpService发送的时候,TcpClient没有反应,为何?
      

  12.   

    这个问题我也刚刚搞清楚。我认为是这样的:TCpServer为了保护多客户(线程)连接、发送问题,在接受完客户的连接后(onAccept事件)就会转换为close_wait状态,等待新的连接请求,此时无法直接和server通讯。
    因此,如果要和TCpServer通讯,发送和接收数据都需要在onAccept事件中完成。
    在客户端,如果要接受服务器发回的信息,必须调用一次TcpClient.Receiveln;然后才能触发onReceive事件。因为它不象ClientSocket自动检查接收缓冲区
      

  13.   

    To:aqjy(anqiang) ,你能不能说的更具体一些,能不能写出Tcpserver的OnAccept事件和Tcpclient的OnReceive事件的代码?
        谢谢!
      

  14.   

    呵呵
    我这几天闲着也没有事情干,随便做了一个简单的多线程文件传输。
    但是好像还有点BUG,当多个用户一起传输时,有的线程会死调。
    我估计可能时BUFFER的问题。
    如果楼主需要的话,我可以把源码奉送,麻烦您老兄多多指正。
      

  15.   

    呵呵,多谢谢danny_ht204(心小志大)大哥,那小弟就不气了,
    [email protected]