我用idTCPClient   idTCPServer做一个文件传输程序  这样的问题如果解决
当正在和一个电脑进行文件传输的时候  同时另一个电脑也需要文件传输 由于SERVER端的TCP端口正在和第一台电脑传输文件 那么第二台电脑连接进来要就产生冲突 这样的问题如果解决
要么 让第二台电脑等待 可是第二台电脑怎么知道SERVER端口正在使用呢
可不可以 用TCP给多台电脑传输文件

解决方案 »

  1.   

    While idTCPClient.Connected do//当已有其它连上后,等待再试
        begin
          application.ProcessMessages;
          inc(i);
          continue;
        end;//while
      

  2.   

    你对服务器根本不懂,正常的服务器是不使用侦听的端口的socket和客户端传输真正的数据的,一旦侦听到一个连接他会创建一个新的socket(使用的端口号随机)和客户端连接,侦听的socket继续侦听,不会被占用的。我建议你还是好好看看真正的服务器例子吧,就是最简单的服务器也是这样的,除非有特殊需求.
      

  3.   

    创建一个新的套接字。http://blog.csdn.net/ZhangYv/archive/2005/02/17/291040.aspx
    ·并发服务器模式  /*       0 服务器端套接字初始化,       1服务器端的父进程用倾听套接字X,倾听来自客户端的请求连接,2当accept一个连接套接字Y时候fork子进程专门处理客户端的数据处理,3子进程关闭倾听套接字X不使用,处理客户端请求,完毕后关闭Y,退出,4而父进程关闭连接套接字描述符Y不使用,继续倾听新的客户端连接(转过程2)。   */do{       /*过程2; 3; 4; 的实现参考代码*///从完全倾听队列中接收一个连接套接字描述符       conn_fd = accept(listen_fd, (struct sockaddr*)&cli_addr, sizeof(cli_addr));       if (conn_fd < 0) error_proc();        //错误处理       switch ( ret = fork() ){       case -1:               error_proc();        //错误处理    case 0:              close(listen_fd);      //关闭倾听套接字描述符              serv_for(conn_fd);    //为客户端提供服务              exit(0);default:       close(conn_fd);       //关闭连接套接字描述符}} while (continue);