c# 编写的C/S 软件通信问题

我编写的一个C/S的软件,在局域网之间通信没问题,我现在在两台不同网段上的机器测试连接不上,不知道是哪里出了问题,是需要设置路由还是需要在代码中更改。或者给我一个C/S模... 我编写的一个C/S 的软件,在局域网之间通信没问题,我现在在两台不同网段上的机器测试连接不上,不知道是哪里出了问题,是需要设置路由还是需要在代码中更改。或者给我一个C/S模式通信的一个配置步骤也可以。 展开
 我来答
OAngs
2013-07-28 · TA获得超过678个赞
知道小有建树答主
回答量:554
采纳率:66%
帮助的人:362万
展开全部
首先你要确定是不同网段还是不同子网。
不同网段下是可以通讯的,而不同子网就要有一些注意的事项了。
比如,你的 IP是 222.222.222.222 对方的 IP 是 111.111.111.111 那么你们是可以直接通讯的。
但是,还打以上两个 IP 为例,你们两人至少其中之一在子网内,那么就不能通讯了。
问题出在端口映射中。
子网与外网的通讯是这样的,子网内发出一个连接请求到外网的另一个 IP,如果你本地网关没有特别设置端口映射的话,网关会随机给您映射出一个端口出来,比如,你使用的是 2020端口,那么网关有可能给您映射出来的端口是 4040 端口,那么接收方这时候应该向你外网 IP 的 4040 端口发送数据才能被你内网的 2020端口接收到。
而如果对方也是内网的话,那就更杯具了,因为接收方还没有在网关上映射端口,而发送方不管向对方 IP 的任何端口发送数据,对方都是接收不到的。
考虑到这种情况,就必须使用服务器来解决了,首先,服务器是外网,他打开一个端口来接受连接请求,两个客户端的连接请求都接收到之后,就可以知道连接方的 IP 和映射出来的端口号了。那么 A 想与 B 通讯,A就可以向服务器请求 B的IP 和端口号,然后在向请求来的 IP和端口号发送数据就可以了。
当然,如果不怕耗费服务器性能,直接由服务器进行转发也是可以的。
追问
那我把服务端放到一个固定ip的服务器上,是不是就不存在这些问题了
追答
是的~
服务器那边要通过终端上行的端口号来确定下行的端口号。
欢乐多Ek
2013-07-28 · TA获得超过478个赞
知道小有建树答主
回答量:477
采纳率:0%
帮助的人:417万
展开全部
不同网段是无法通信的,非要通信需要中间服务器。
你的client可以不是一个网段,但是两个client网段都必须和server网段能通信。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenyun126
2014-05-03 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:80.7万
展开全部

请问你的问题解决了没?同求

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式