有没有人知道,两个局域网内的两台机器如何通讯???(0分)

  • 主题发起人 主题发起人 mei7810
  • 开始时间 开始时间
M

mei7810

Unregistered / Unconfirmed
GUEST, unregistred user!
做一个实时的可以通讯的程序?????在internet上!????
 
用 clientsocket 和 serversocket
这边的人怎么这样,不给分就不答问题...也太那个了....
建议你去国外的 expert exchange, 他们就没这套
 
这根本就不是分不分的问题,这个老问题已经讨论过一百几十万遍了,最后还是没有得到很好的思路。现在一般的办法都是靠外部服务器中转。
为了证实不通过中转的服务器是不能建立连接,举个简单例子:
TCP:SERVER在局域网A里面提供服务,CLIENT要连接到SERVER就要知道他的IP和端口,IP容易知道,可是端口呢?如果A里面运行了两个服务器,CLIENT应该连接到哪一个呢?所以这中情况下,最有效的方法就是在A端的路由或者代理软件做端口影射到SERVER!
UDP:其实UDP是最容易实现的,就是数据包比较难控制。今天和老师做了个实验,他是用JAVA写的。CLIEN发一个消息包到SERVER,SERVER就可以用一个API函数可以获得CLIENT的IP和端口,SERVER可以根据这个IP和端口,发数据包到CLIENT,CLIENT是可以收到的(即使在局域网里面)问题是如果SERVER在一个局域网里面,它就收不到这个消息包。所以,普遍的做法是要一台外网的机器,接受其他连接,获得他们的IP和端口以后就告诉他们:你们的IP和端口是******。然后CLIENT之间就可以根据各人的端口和IP进行发送数据,而不需要经过服务器中转,这样就减少服务器压力。腾讯就是这种做法,所以就算有几百万人同时在线,服务器压力也不会好大~
比较超前的想法(只是想法,不知道有没有人可以实现):CLIENT用反弹原理,发送一个数据包到路由,数据包反弹回来,告诉CLIENT:“你的对外端口是***”。然后CLIENT_A打个电话告诉CLIENT_B,我的IP是***.***.***.***,端口是,****。然后CLIENT_B就根据这个IP和端口发送消息过来,无论CLIENT_A在什么地方都可以收到,这就是真正的两台不同局域网之间机器的数据传输!
 
多谢各位!
 
接受答案了.
 

Similar threads

回复
0
查看
845
不得闲
D
回复
0
查看
926
DelphiTeacher的专栏
D
D
回复
0
查看
867
DelphiTeacher的专栏
D
后退
顶部