情况:网站服务器s,不同局部网下的客户端a,b网站的数据库中建立表,记录下访问网站人的ip和端口程序的实现方式过程:
1)b登陆服务器s,(服务器记录下b的外网端口和ip,此时b绑定本地端口进行侦听)
2) a登陆服务器s,(服务器记录下a的外网端口和ip)
3) a寻问服务器s 客户端b是否在线,在线把b的端口和ip回传给a
4) a拿到b的外网ip和端口,connect客户端b,实现返回-1,错误代号是10035,接着a就开始侦听本地端口(这个过程我理解为打洞,不知道有没有错?希望高手帮我解答)
5) a告诉服务器s 他已经向客户端b发送请求了,结果失败
6)服务器s告诉客户端b说客户端a已经打好洞了,把客户端a的外网端口和ip告诉b
7)客户端b开始connect 客户端a 结果也是10035
请问下各位我这样的过程能实现客户端a和b建立链接吗?上面我说的侦听本地端口,
我本地端口的获得方式是相当于netstat -n找到跟服务器链接的记录,然后把本地端口取出来侦听,我有把端口设置为重用
setsockopt(m_sHost,SOL_SOCKET ,SO_REUSEADDR,(const char*)&m_ServerAddr,sizeof(BOOL));