在使用winsock或CSock时, 设置网络端口时常会遇到" address in use" 的错误, 但又不想逐个端口尝试. 如下,我用下面函数之一,在服务器端由Windows分配端口。
---------------
CAsyncSocket::Create
BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL );........nSocketPortA well-known port to be used with the socket, or 0 if you want Windows Sockets to select a port.
---------------
CAsyncSocket::Bind
BOOL Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL );BOOL Bind ( const SOCKADDR* lpSockAddr, int nSockAddrLen );将nSocketPort设置为0或者是lpSockAddr设置为NULL,也可以自动的让Windows选择一个空闲的端口!---------------
既然由Windows随机分配端口,那么如何协调服务器端与客户端端口一致性?
---------------
CAsyncSocket::Create
BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL );........nSocketPortA well-known port to be used with the socket, or 0 if you want Windows Sockets to select a port.
---------------
CAsyncSocket::Bind
BOOL Bind( UINT nSocketPort, LPCTSTR lpszSocketAddress = NULL );BOOL Bind ( const SOCKADDR* lpSockAddr, int nSockAddrLen );将nSocketPort设置为0或者是lpSockAddr设置为NULL,也可以自动的让Windows选择一个空闲的端口!---------------
既然由Windows随机分配端口,那么如何协调服务器端与客户端端口一致性?
解决方案 »
- MSDN出问题:语法错误,起因是用360杀过毒。重装MSDN也不见好转,怎么办?
- 我用VC++6.0写了一个密码学大数运算器,但不会打包,
- VC 多线程Debug模式,为什么线程结束了会出现The thread 0xA28 has exited with code 0这样的问题?
- 文件序列化的操作 问题不难,来者有分!
- 急!!! ------ RichEditView 出现半个汉字及乱码该如何解决?(进者有分)
- 高分请教VC下的程序编译成的汇编代码。
- 我在写ISAPI的查询程序,面临一个性能与速度的取舍问题
- 学java 用什么工具好呢?VJ++还是JBiulder?还是……
- 菜鸟求教,输字符怎么没反应啊
- 关于位运算的问题
- IcmpSendEcho函数使用
- 怎样把给定的数据在坐标系中表示出来?
然后再看自己用那个port!
下来就是选一个没用过的端口了!注:
win2k缺省的出站连接的临时端口为1024-5000,要想使用更多的出站端口需要修改注册表
修改方式:
在
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
项下建一个
MaxUserPort
双字节值,
例如:取值为10000时,大约有9000个端口可用