例如服务器是通过路由器(路由器ip是192.168.6.9)连接的网络 此时服务器无线网卡的ip是192.168.1.1
而此时一个客户端(ip是192.168.6.123)通过给服务器端推送消息那么socket对象该连接哪个网络地址呢?
我认为这个无线路由器就相当于一个代理,如果我们的客户端连接代理推送消息后,代理就不再路由了,导致服务器直接接收不到消息;而如果客户端直接连服务器是连不通的!(ping不通)这种情况该如何处理呢?
例如:
try { byte[] imageb = message.ToByteArray(); Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sender.ReceiveTimeout = timeOut; IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(ip), port);//连接哪里? sender.Connect(remoteEP);//服务器ip?? sender.Send(imageb); sender.Close(); } catch { }
当然是连接 192.168.1.1
你要记住,只要没有使用代理,客户端始终是要连接到服务器的IP,如果使用了代理,客户端应该连接代理.
客户端192.168.6.123直接连接192.168.1.1是连不通的 只能通过无线路由器192.168.6.9来连接
但是如果连192.168.6.9 是无法路由到192.168.1.1上去的
@LYDNG: 连不通是因为你的路由器没有配置路由信息或者无法路由到 192.168.1.1。给你举个例子,打开操作系统的命令行窗口,键入:tracert www.cnblogs.com ,你会看到从你的机器到 www.cnblogs.com (其 ip 为42.121.252.58)中间会经过的路由节点及节点的 ip,我假设其中一个路由节点是 124.160.81.230,请问,如果要你写 socket 连接到 www.cnblogs.com,你是 connect(42.121.252.58),还是 connect(124.160.81.230)?
请你学习下计算机网络知识,可以找本大学教材《计算机网络》读读。
这样是没办法访问的,正常情况在不同的网段必须网关代理,所以无法访问,但陆游器可以设置访问某主机,自己进陆游器看吧。
刚看了下,应该叫“虚拟服务器”你设置好IP和端口