了解ESP8266的基本工作原理,使程序能够自行连接给定的WIFI热点和服务器并实现双向通信。
wifi模块参数配置:
#define WIFI_NAME "hello_world" //需要连接的热点名 #define WIFI_PWD "87654321" //热点密码 #define SERVER_ADDR "192.168.43.73" //服务器IP地址 #define SERVER_PORT "5656" //端口号
首先想要与同一局域网内部的另一个电脑进行数据传输,需要知道它的IP地址,因为IP是连接网络之后分配给个人主机的唯一标识,所以先找到想要建立连接的主机的地址,然后我们双方共同约定一个类似于管道的唯一出入口(也就是端口号port),这里的端口号一般分为公认端口号和注册端口号,约定好端口号传输的时候双方都需要遵守共同的网络协议(TCP(SOCK_STREAM),UDP(SOCK_DRAM),ICMP(SOCK_RAW))。
公认端口号:知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等
注册端口号:端口号从1025到49151。它们松散地绑定于一些服务。也是说有许多服务绑定于这些端口,这些端口同样用于许多其他目的。这些端口多数没有明确的定义服务对象,不同程序可根据实际需要自己定义,如后面要介绍的远程控制软件和木马程序中都会有这些端口的定义的。记住这些常见的程序端口在木马程序的防护和查杀上是非常有必要的。常见木马所使用的端口在后面将有详细的列表
一般选择端口号都是选择注册端口号,没有明确的定义 服务对象,不同的通信可以根据自己的需要进行定义。
#include <arpa/inet.h>//包含socket函数使用的各种协议族,send(),recv() #include <unistd.h>//调用linux系统函数的头文件(read(),write(),send(),select()) #include <iostream> #include <thread> #include <list> #define PORT 7000 #define IP "127.0.0.1"
这篇对原理和函数进行了说明,并给出例程。
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。