首页 新闻 会员 周边 捐助

socket通讯 如果服务器端用的是无线连接 怎么给服务器端推送消息?

0
悬赏园豆:15 [已解决问题] 解决于 2013-12-03 14:39

例如服务器是通过路由器(路由器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 { }
Moulton的主页 Moulton | 菜鸟二级 | 园豆:206
提问于:2013-11-04 14:57
< >
分享
最佳答案
0

当然是连接 192.168.1.1

你要记住,只要没有使用代理,客户端始终是要连接到服务器的IP,如果使用了代理,客户端应该连接代理.

收获园豆:12
Launcher | 高人七级 |园豆:45050 | 2013-11-04 15:09

客户端192.168.6.123直接连接192.168.1.1是连不通的  只能通过无线路由器192.168.6.9来连接

Moulton | 园豆:206 (菜鸟二级) | 2013-11-04 15:49

但是如果连192.168.6.9  是无法路由到192.168.1.1上去的

Moulton | 园豆:206 (菜鸟二级) | 2013-11-04 15:50

@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)?

请你学习下计算机网络知识,可以找本大学教材《计算机网络》读读。

Launcher | 园豆:45050 (高人七级) | 2013-11-04 17:52
其他回答(1)
0

这样是没办法访问的,正常情况在不同的网段必须网关代理,所以无法访问,但陆游器可以设置访问某主机,自己进陆游器看吧。

收获园豆:3
56180825 | 园豆:1749 (小虾三级) | 2013-11-04 19:24

刚看了下,应该叫“虚拟服务器”你设置好IP和端口

支持(0) 反对(0) 56180825 | 园豆:1749 (小虾三级) | 2013-11-04 19:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册