请大家帮忙分析下(关于winsock)解决方案

请大家帮忙分析下(关于winsock)
本人在做个点对点及时聊天模块,设计结构是:
1、如果打洞成功,则消息直接进行点对点发送;否则消息通过服务器转发。
2、若对方不在线,消息由服务器保存,对方登陆成功后再转发给对方。

现在的情况是:
      在局网内一切OK,可当将服务端放到一有公网IP的机器上后,发送的消息,对方收不到(已知道打洞未成功,所以服务器收到了消息进行转发,可是转发后,对方并未收到)
      但是,发送时,若对方不在线,消息由服务器保存,对方登陆成功后能正确接收到消息

因服务器端机器不在公司内,无法安装VC进行调试,请高手们帮忙分析下可能的情况

------解决方案--------------------
顶,关注
------解决方案--------------------
写点日志,然后根据日志来进行分析。
------解决方案--------------------
如果打洞未成功,是不是也不能保证对方跟服务器的是连接的呢?
------解决方案--------------------
The problem may due to the receiption site

check the code about recv( or recvfrom ),to check whether the recv exits abnormalitily or not
------解决方案--------------------
数据穿过NAT时方式不对
------解决方案--------------------
看来你是用TCP打洞,有点困难,UDP要简单点
------解决方案--------------------
打洞本来就不是一件容易的事,首先你要把打洞技术钻透才行。