socket编程问题,求教了~

kiss_xiao0968 2010-07-27 09:12:03
我现在遇到的问题是,如果一个电脑直接连入公网,做服务器,然后客户端访问没有什么问题,但是,如果一个电脑通过局域网连接路由器上网,这时做服务器就会连不上?
还有就是我在服务器端创建了一个线程循环检测有没有客户端连接,但是总是接受到204.204.204.204地址的连接,这个是为什么啊?
求高手赐教了,我第一次弄这个,感觉还挺棘手的。。。到现在还不知道怎么防止别的客户端恶意连接呢,郁闷啊,希望有懂的朋友给我讲述点经验,谢谢了~
...全文
135 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hurryboylqs 的回复:]
要有公网的IP才能连接,内网的机器是没有公网IP的,只有路由器具有,这是基本常识
[/Quote] 是哨子,基本的
InitialJ 2010-07-27
  • 打赏
  • 举报
回复
路由通过NAT端口映射到你的服务器
shenyi0106 2010-07-27
  • 打赏
  • 举报
回复
配置路由器的端口映射
偶像罗斯福 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cppfile 的回复:]

因为服务端如果隐藏在路由器后面,就需要在路由器上开放端口,或者端口映射一下,否则连不上的

别管他什么地方练过来的,如果有数据就读取,如果发现数据不对(包格式错误),就直接断开

当然如果这样的链接很多的话,就构成dos 攻击了,如果很多程序地方同时连接你的服务器的话,就构成了ddos攻击了

你可以设置你的服务端口为不常用的端口,这样可能会好点,不过如果有心人和你捣乱,也没办法的
……
[/Quote]可以禁止掉ip啊,怎么就没办法了
西湖秀才 2010-07-27
  • 打赏
  • 举报
回复
公网IP是唯一的,而通过路由器连接的IP是要经过NAT转换的,即连接的多个主机与外部交换数据时共用同一个IP,不是真正唯一的IP,所以你路由器连不通,这个一般要看TCP,UDP打洞这方面的资料!
http://www.vckbase.com/document/viewdoc/?id=1773
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
hurryboylqs 2010-07-27
  • 打赏
  • 举报
回复
要有公网的IP才能连接,内网的机器是没有公网IP的,只有路由器具有,这是基本常识
CppFile 2010-07-27
  • 打赏
  • 举报
回复
因为服务端如果隐藏在路由器后面,就需要在路由器上开放端口,或者端口映射一下,否则连不上的

别管他什么地方练过来的,如果有数据就读取,如果发现数据不对(包格式错误),就直接断开

当然如果这样的链接很多的话,就构成dos 攻击了,如果很多程序地方同时连接你的服务器的话,就构成了ddos攻击了

你可以设置你的服务端口为不常用的端口,这样可能会好点,不过如果有心人和你捣乱,也没办法的
c271525290 2010-07-27
  • 打赏
  • 举报
回复
学习了!

学习就该不断钻研……
【天运子】 2010-07-27
  • 打赏
  • 举报
回复
进路由器设置DMZ也可以

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧