一个port同一时间只能用一次,你说的ftp是客户端的吧。

解决方案 »

  1.   

    To lanfan
    How to config this!?
      

  2.   

    port就是不同服务进程的ID号,一个ID应该不能同时标识两个进程吧.但你所说的同时开启多个FTP服务,用的是同一个端口吗?如果我访问你这个端口,那么他用哪个FTP的服务?
      

  3.   

    开启多个FTP服务//使用的是同一个端口,只是它是多线程的~
      

  4.   

    两种方法,
    1。SOCKET的句柄可以继承。所以如果另外一个进程是前面那个进程的子进程,就可以直接使用同一个socket.
    2。就是上面有人提到过的重新绑定。
    可以使用参数 bind到已经使用的端口,具体参数查查winsock2.h,我忘掉了。
      

  5.   

    原来是多线程.对应端口号的进程响应一个连接,并把连接分配给一个空余的线程去工作,这种方法web服务也在用.
      

  6.   

    把端口设为可重用 setsockopt(..SO_REUSEADDR ..)
      

  7.   

    to clack and kevin
    BIND函数有这个参数悬想,是吗?我去找找看,另外,他们说的如果有CLIENT端发起请求是不是两个BIND到这个PORT的SERVER程序都可以收到?把PORT设置为可重用的,能告诉我这个函数在哪里使用吗?给个SAMPLE,好吗。谢谢。
      

  8.   

    请回答问题的老兄们负责好不好!!FTP客户与FTP服务器是不同的。
    原因如下:FTP服务器是用 PORT 21 来进行Listen的,当FTP客户来进行请求时,服务器会分配一个新的PORT去与客户进行通讯,而不是PORT 21。所以FTP客户的 PORT 不一定是 21。
    可以有多个FTP客户在启动.
      

  9.   

    就是这个老
    #define SO_REUSEADDR    0x0004          /* allow local address reuse */#define #define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR)) /* disallow local address reuse */
      

  10.   

    就是这个老
    #define SO_REUSEADDR    0x0004          /* allow local address reuse */
    #define SO_EXCLUSIVEADDRUSE ((int)(~SO_REUSEADDR)) /* disallow local address reuse */