怎样防止网络程序“自己被自己阻塞”,封端口还是过滤包?

2025-03-24 09:09:50
推荐回答(1个)
回答1:

首先你是用TCP/IP协议吧,如果你说不是,估计没几个高手能回答的问题,现在假设你用的是TCP/IP协议。
你看书看得太多了,代码几乎没写过,完全曲解是TCP/IP模型,如果想理解的话,用Ethereal帮助你,理解一下什么叫网络编程,什么叫数据包,网络层是怎么分吧。
1。你有且只有把闭口关(也就是把socket关了),因为你不关的话,当有数据到达时,windows会帮你把数据缓冲起来,默认的缓冲区好你好像是8K左右,也就是说你只要端口开着,你就会无条件接收,当你把端口关了(也就是把socket关了),也就是网络已经断了,怎么会传到应用层呢!你平时接收到的数据就是应用层的数据,如果你不用某些较少用的API函数设置的话,你根本就没法收到应用层以下的数据,你顶多可以设一下协议,可以设一下端口和绑定的IP
2.如果你要实现底层过滤包,那就要使用windows提供的防火墙类别的函数,当然你想做得更彻底的话,可以写WDM驱动(也就是网卡的过滤层驱动),嘻嘻,如果你达到这个境界,不用来这里发贴子