远程连接失败要求的函数不受支持 电脑true端口连接被断开是什么意思?

[更新]
·
·
分类:互联网
1827 阅读

远程连接失败要求的函数不受支持

电脑true端口连接被断开是什么意思?

电脑true端口连接被断开是什么意思?

从题主的错误看是产生了错误,也就是提示address already in use,这是同一个地址(IP 端口)被多个套接字绑定所致的。
我猜题主的实验流程是这样的:
客户端1绑定IP:Port,连接服务端1;
客户端2绑定IP:Port,连接服务端2;
然后第2步的时候提示你。
题主可能是认为在调用的时候再去检查四元组是否唯一,但实际上并非如此,因为套接字绑定本地地址后, 既有可能,也有可能。如果允许2个进程绑定同一个地址,那如果这2个进程都调用呢?那么就必须由函数来检查这个服务器是否和其他服务器占用了同一地址。而并不会做这件事,它的作用仅仅是把默认创建的主动套接字(客户)转换成被动套接字 (服务),顺便指定内核维护的连接队列的大小。
因此如果题主是这样进行实验的话,并不能证明Linux客户端不支持端口共用,而且我在Windows上做了同样的实验,出现同样的错误
Windows上也是出错,这里我打印了的错误码(因为Windows上就是摆设) ,10048,参考windows-sockets-error-codes-values-and-meanings
,即错误WSAEADDRINUSE
,意思是Address already in use。
问题不在于Linux系统,而在于socket本身是在bind时就要检查绑定地址是否唯一。
补充:关于TCP的选项。
最常见的是解决TIME_WAIT连接继续占用该地址的问题的,但是如果你直接启动2个进程bind同一地址,用这个选项还是报错。因为TCP无法启动2台绑定同一地址的服务器。
但是,首先到某地址的客户端并成功连接服务器,客户端2再该地址是可行的,但是连接同一服务器还是会报错,只不过错误变成了 (Cannot assign requested address),这是导致的错误,即赋予客户端的临时端口(ephemeral port)已被占用。
但是绑定同一端口的客户端可以连接其他服务器,为了证明这点,我做了个实验,在2台远程服务器还有本地主机上运行了下面的服务端程序
然后在本地主机分别启动3个客户端程序分别连接到对应服务器
然后查看端口占用(这里我手动隐藏了我的服务器地址)
可以发现客户端是支持端口共用的。

win11 远程桌面出现身份验证错误?

远程桌面报“出现身份验证错误,要求的函数不受支持”是设置错误造成的,解决方法为:
1、通过运行---regedit,打开注册表编辑器;打开路径:计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem。
2、在System项下创建CredSSP项,在CredSSP项里面创建新项命名为Parameters。
3、在Parameters项里新建DWORD(32位)值。
4、重命名为AllowEncryptionOracle。修改好后关闭注册表编辑器;使用远程桌面连接测试。