socket通信是网络的基础小程序,工作在传输层;
网络基础知识:
应用层----------HTTP/FTP-----------------
传输层-----------TCP/UDP-----------------端口
网络层-----------IP/ICMP-------------------IP地址
链路层-----------CSMA/CD-----------------MAC
物理层
socket通信的代码在此不再赘述,就主要的环境和结构做一简单说明。
client端和server端,能通信的前提:
1. ping通:说明网络层没有问题;只要有节点(包括端节点)对ICMP进行了过滤,Ping不通是正常的。最常见的就是防火墙的行为。
2. server端 通信端口打开:有系统为保证安全,会关闭端口,禁止外面程序通过端口连接。在windows下,可以关闭防火墙,这样所有端口都开放,在linux下采用iptables的规则配置防火墙,打开端口。ping通了不代表端口打开了。
下面给出demo测试环境,有windows(32bit)(MFC)与linux两个版本