在大富翁中至今未很好解决的老问题......散尽全部身价(200分)

  • 主题发起人 主题发起人 findbug
  • 开始时间 开始时间
F

findbug

Unregistered / Unconfirmed
GUEST, unregistred user!
我们公司是采用局域网方式上网,自动分配IP地址,不用设置代理服务器。
OICQ之类的软件可以正常使用,也可以和其他使用局域网上网的用户聊天,
可是如果要自己写通讯程序,但是不借助服务器(与QQ不同之处),那么该
如何建立连接?(假设双方彼此知道上网服务器的IP地址和局域网内的用户名)。
 
可以用TServerSocket、TClientSocket实现。我的网络监控程序就是这样实现,它既可以
在局域网中实现,也可以在Internet中实现。
 
你用过NetChat吗,他是不用服务器的,找作者联系一下大有好处
 
是在同一个局域网里吗?这个不难呀,“不借助服务器”反而简单的多,直接连就是了。
网上局域网聊天程序很多,就是源程序也能找到不少。
 
可以用TServerSocket、TClientSocket实现。DELPHI自带的DEMO中有一个CHAT的例子,
参考它你就可以做出简单的网络通讯程序了,连接时用IP和主机名都可以。
 
这个问题的关键是你打算使用什么方式进行连接,虽然是使用动态IP,但主机名是固定的
可选用的方式很多,如果只是进行简单的通信,使用UDP方式就可以了。
 
问题是:
如果在不同局域网之间建立连接,应如何做?
 
hehe ,用UDP广播嘛!
 
以用TServerSocket、TClientSocket实现,可以用IP地址实现
 
hehe ,用UDP广播?
你以为你发广播包全世界都能收到呀,哈哈
 
难……,只要有其中一方是通过代理服务器访问Internet的,要想简单地实现连接就怕是
不行,TServerSocket和TClientSocket恐怕难以胜任,要支持代理服务器的控件才行。
 
用UDP,端口隐射,不过最好有一个服务器中转
 
findbug,
你说的网络拓扑结果是这样?
clientA--(netA)----GatewayA---(internet)---GatewayB---(netB)--clientB
可以肯定,GatewayA和GatewayB都做了MASQUERADE。如果clientA想连接clientB,只有这几种情况
1)netA和netB之间作VPN/tunnel;netA上的任何机器和netB上的任何机器可以自由相互通讯
2)GatewayB上作DNAT;clientA可以用TCP主动连接clientB,相反GatewayA上作DNAT;clientB可以用TCP主动连接clientA
3)通过处在INTERNET上第三台机器作中转;
4)在GatewayA和GatewayB上分别装Proxy
除此之外别无他法。

学网络编程,不学TCP/IP不行。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
740
DelphiTeacher的专栏
D
后退
顶部