accept的会自动创建一个新的套结字用于主机和客户端通讯,
但是我想让它创建的套接字的端口在我的指定范围内,要如何设置。
例如我想设置端口范围在10000~20000范围内。

解决方案 »

  1.   

    bind
    The Windows Sockets bind function associates a local address with a socket.int bind(
      SOCKET s,                          
      const struct sockaddr FAR *name,   
      int namelen                        
    );
      

  2.   

    帅哥,可能你不小心看错了。俺说是在accept的时候,为创建的新Socket指定端口。
      

  3.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/sockaddr_2.asp
    指定一个端口应该没什么问题,要指定范围,可以让定义一个变量,让它在10000~20000范围出现的随机数,不知道这样行不,最好研究一下MSDN
      

  4.   

    楼主也不说明白,到底你是想指定服务端端口还是client端口
      

  5.   

    lz设置好自己侦听的端口号,client的是随机的
      

  6.   

    如果只是设置Listen的端口,我想任何人包括用组件做开发的都会。我是想指定accept之后的通讯用的套结字端口。如oyljerry(【勇敢的心】→ ㊣任逍遥√㊣)所说,一般的情况Listen的端口的端口是自己设置,而真正用于通讯的client端口是Winsock随机在系统中找个空闲的端口。而我想把这个随机找的端口设置在我指定的范围内,问有没有办法。
      

  7.   

    上面的说法还不完全切题,更正如下:如果只是设置Listen的端口,我想任何人包括用组件做开发的都会。我是想指定真正通讯用的套结字端口。一般的情况Listen的端口的端口是自己设置,而真正用于通讯的端口是Winsock随机在系统中找个空闲的端口。而我想把这个随机找的端口设置在我指定的范围内,问有没有办法。
      

  8.   

    呵呵,sorry,楼主,当时匆匆路过
    一般socket->bind->listen->accept,listen和accept的socket是不一样的.没有见为accept指定端口这样干的啊.
      

  9.   

    Accept 创建的SOCKET的端口号就是侦听Socket的端口号, 你监视一下试试
      

  10.   

    没有见过怎么指定Accept()创建的套接字的端口。看过的书里好像都没有涉及到这方面的东西啊!
      

  11.   

    如果我沒有記錯的話,在服務端,ACCEPT所得到的套接字,仍然是使用偵聽的端口的。
    樓主可以用netstat去看一下。