假设:客户端1为C1,客户端2为C2,服务器为S
传统的文件输程序,C1直接向C2发出连接请求。当C2侦听到C1的请求后就建立1对1的连接。但是如果C2的客户端是通过路由上网的,C1是没法找到C2的的侦听,除非C2的路由做了端口映谢。
现在我把程序结构改成C/S结构
前提条件是C1,C2的另一个端口已和S服务器建立了独立的连接
当C1的另一个端口向S请发出连接请求,S得到侦听到requestID值,并把requestID值转发到C2,C2接到转发的requestID值时建立连接。但C2电脑提示:"实时错误'10038,描术符不是一套接字"。
为什么会这样,难道侦听到的requestID值,转发到另一台工作站再建连接是不行的?
6 个解决方案
#1
requestID只能在同一台机器上有效吧...其实那个ID我猜测就是一个socket的handler来的,你不能把一台机器的socket handler传到另一台机器然后还指望它能用啊
#2
requestID只能在同一台机器上有效吧...
我发现requestID这个值,只能在同一个主程序里调用才可以,如果转到另一个主程序里,就失效了。
看来要实现文件传输,不受侦听的控制,只可以去处理路由的端口映射这方向做手脚了
我发现requestID这个值,只能在同一个主程序里调用才可以,如果转到另一个主程序里,就失效了。
看来要实现文件传输,不受侦听的控制,只可以去处理路由的端口映射这方向做手脚了
#3
你的问题是典型的NAT穿透问题,你如果有兴趣可以去找下NAT穿透的东西,如果没有兴趣的话你就使用那个服务器S作为信息转发的中继吧。
#4
ding
#5
#6
这个问题,可能只可以使用
典型的NAT穿透,来解决了
典型的NAT穿透,来解决了
#1
requestID只能在同一台机器上有效吧...其实那个ID我猜测就是一个socket的handler来的,你不能把一台机器的socket handler传到另一台机器然后还指望它能用啊
#2
requestID只能在同一台机器上有效吧...
我发现requestID这个值,只能在同一个主程序里调用才可以,如果转到另一个主程序里,就失效了。
看来要实现文件传输,不受侦听的控制,只可以去处理路由的端口映射这方向做手脚了
我发现requestID这个值,只能在同一个主程序里调用才可以,如果转到另一个主程序里,就失效了。
看来要实现文件传输,不受侦听的控制,只可以去处理路由的端口映射这方向做手脚了
#3
你的问题是典型的NAT穿透问题,你如果有兴趣可以去找下NAT穿透的东西,如果没有兴趣的话你就使用那个服务器S作为信息转发的中继吧。
#4
ding
#5
#6
这个问题,可能只可以使用
典型的NAT穿透,来解决了
典型的NAT穿透,来解决了