问题描述:
我做的是一个聊天软件,要求是输入对方IP,然后可以进行文字信息发送.
我在局域网中直接输入内网IP.如:192.168.1.220.则可以进行连接.
但如果和外网用户进行连接则不知道如何输入IP.
假设...对方外网IP为:219.155.167.5 网关为:192.168.1.63 内网IP为:192.168.1.220
应该如何输入IP才可以和外网用户P2P连接....在线等..谢谢
问题解答:
首先,直接输入IP和端口连接外网用户是不太可能的。除非对方是独立IP的外网用户,如果对方存在NAT,那么,就算你知道它NAT的IP,但是端口号是NAT自动分配的,你就不知道了。
这种情况下,一般都需要服务器了,在公网上运行一个服务器端程序。客户端可以和服务器通讯,让服务器来获取到客户端对应的外网IP和端口,但是就算用这种方式可以通过服务器得到对方的IP和端口,也是不可以直接建立通讯的,这里面还涉及到NAT的类型,其中主要分为对称型和非对称型,如果想要进行P2P通讯,那你还得进行NAT穿透。
不过如果你只是需要发些聊天文本消息的话,建议你还是使用服务器中转好了,毕竟文本消息的数据量不大,用户量不是很大的情况下,使用服务器中转还是比较方便快捷的。P2P直接通讯,还是在需要大量数据传输的时候再考虑吧,比如传文件,语音视频聊天等。
不知道你采用的是固定端口开始随机端口, 如果是固定端口的话让对方在防火墙/路由上做一个端口影射把自己机器的端口暴露于公网也可以