3

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
4

1 回答 1

1

我从以下网址找到了答案:https: //support.microsoft.com/en-us/kb/929851

您可以使用 netsh 命令调整此范围,如下所示:

netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range

此命令设置 TCP 的动态端口范围。起始端口为数字,端口总数为范围。以下是示例命令:

netsh int ipv4 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000
netsh int ipv6 set dynamicport tcp start=10000 num=1000
netsh int ipv6 set dynamicport udp start=10000 num=1000

将范围设置为以下:

netsh int ipv4 set dynamicport tcp start=49152 num=16384

最后,即使临时端口应该是短暂的,但诸如 teamviewer 之类的应用程序可能会使用keep-alive请求并在端口上保留更长的时间。

于 2016-12-06T11:19:39.053 回答