Teamviewer 使用本地端口 1098(也是 JNDI 端口)建立了传出连接。
我花了 2 个小时才意识到错误是什么,因为我专注于产生的异常,例如:
Exception: javax.transaction.NotSupportedException: Cannot set transactional mode, error is setAutoCommit() is not allowed - use TransactionHelper instead
javax.transaction.NotSupportedException:
Cannot set transactional mode, error is setAutoCommit() is not allowed - use TransactionHelper instead
at daoframework.daofactory.transactions.LocalUserTransaction.begin(LocalUserTransaction.java:78)
有什么办法可以阻止 teamviewer 使用这个端口?
发现使用:
$ netstat -aon | grep 1098
TCP XX.XXX.XX.XX:1098 XXX.XX.XXX.XXX:80 ESTABLISHED 2596
然后在taskmanager中查找PID。
更新
这似乎更像是一个 Windows 7 问题。在 windows vista 及更高版本中:
为了遵守 Internet 号码分配机构 (IANA) 的建议,Microsoft 增加了 Windows Vista 和 Windows Server 2008 中传出连接的动态客户端端口范围。新的默认起始端口为 49152,默认结束端口为 65535。这是与使用默认端口范围 1025 到 5000 的早期版本的 Windows 的配置不同。
有没有办法修补 Windows 7 以使用更高的端口号进行传出连接?
更新2
我的 Windows 7 机器确实以低端口限制运行。
C:\Windows\system32>netsh int ipv4 show dynamicport tcp
Protocol tcp Dynamic Port Range
---------------------------------
Start Port : 1025
Number of Ports : 64510