?電腦端運(yùn)行通訊貓調(diào)試助手,作為服務(wù)端:
電腦端
電腦的IP地址是: 192.168.2.232
手機(jī)與電腦之間的TCP通訊
手機(jī)端運(yùn)行網(wǎng)絡(luò)調(diào)試精靈,作為客戶端:
手機(jī)端
如果從手機(jī)端點(diǎn)擊"發(fā)送"按鈕,則也會將"ghhh東方紅廣場"幾個字發(fā)送到電腦上(服務(wù)端).
ESP8266作為客戶端:
// 注意如果是本地設(shè)備作服務(wù)器,則要求TCP Sever 和 ESP8266 都連接到同一個路由器。
#include <ESP8266WiFi.h>
#define AP_SSID "trdjtxxx" //所用WiFi的名字
#define AP_PSW "xh36xxxx" //所用WiFi的密碼
const uint16_t port = 10002; //Tcp 服務(wù)器的端口
const char * host = "120.76.100.197"; //Tcp 服務(wù)器的ip地址
WiFiClient client; //創(chuàng)建一個tcp client連接
void setup() {
Serial.begin(115200);
delay(5000);
WiFi.mode(WIFI_STA); //設(shè)置WiFi 為 Station 模式
WiFi.begin(AP_SSID,AP_PSW); //連接WiFi
Serial.println("Connecting to WiFi... ");
//等待wifi連接成功
while (WiFi.status() != WL_CONNECTED) {
Serial.println("Failed!");
delay(500);
}
Serial.println("");
Serial.println("Connected");
Serial.println("Local IP: ");
Serial.println(WiFi.localIP());
delay(500);
}
void loop() {
Serial.println("Connecting to TCP Server :");
Serial.println(host);
if (!client.connect(host, port)) {
Serial.println("Failed");
Serial.println("Reconnect in 5 seconds");
delay(5000);
return;
}
// 發(fā)送數(shù)據(jù)到 Tcp Server
Serial.println("Send The String to TCP Server :\"I am Esp8266\"");
client.println(String("I am Esp8266"));
//讀取從 Tcp Server 返回的數(shù)據(jù)(以回車符結(jié)尾)
String line = client.readStringUntil('\n');
Serial.println(line);
//3s 后關(guān)閉連接
delay(3000);
Serial.println("");
client.stop();
//等待5s,程序循環(huán)運(yùn)行,即5s后從新開始連接
Serial.println("wait 5 sec...");
delay(5000);
}
120.76.100.197 即:webtcp.tongxinmao.com的IP地址.
ESP8266作為TCP服務(wù)器:
// ESP8266 TCP服務(wù)端程序,同時也作為一個WIFI AP
// 注意作為客戶端的電腦或手機(jī)必須先通過WIFI連接到此ESP8200上
// 即和 ESP8266 都連接到同一個網(wǎng)絡(luò)中。
Arduino 程序代碼:
#include <ESP8266WiFi.h>
#define MAX_SRV_CLIENTS 3 //最大同時連接數(shù),即可接入的設(shè)備數(shù)量的最大值,
//8266 tcpserver只能接入5個(此數(shù)據(jù)不確定,網(wǎng)上是這么說的)
WiFiServer server(8266); //端口號,范圍 0-65535
WiFiClient serverClients[MAX_SRV_CLIENTS];
const char WiFiAPPSW[] = "xh36xxxx"; //設(shè)置AP模式下模塊所發(fā)出的WIFI的密碼
char data[1500];
int ind = 0;
void setupWiFi()
{
WiFi.mode(WIFI_AP);
uint8_t mac[WL_MAC_ADDR_LENGTH];
WiFi.softAPmacAddress(mac);
String macID = String(mac[WL_MAC_ADDR_LENGTH - 3], HEX) +
String(mac[WL_MAC_ADDR_LENGTH - 2], HEX) +
String(mac[WL_MAC_ADDR_LENGTH - 1], HEX);
macID.toUpperCase();
//設(shè)置AP模式下的WIFI名稱:12345678_ + MAC地址后六位
String AP_NameString = "12345678" + macID;
char AP_NameChar[AP_NameString.length() + 1];
memset(AP_NameChar, AP_NameString.length() + 1, 0);
for (int i=0; i<AP_NameString.length(); i++)
AP_NameChar[i] = AP_NameString.charAt(i);
WiFi.softAP(AP_NameChar, WiFiAPPSW);
Serial.println();
Serial.print ( "IP address: " );
Serial.println ( WiFi.softAPIP() );
server.begin();
}
void setup()
{
Serial.begin(115200);
Serial.println ("\nBegin now!!!");
setupWiFi();
}
void loop()
{
uint8_t i;
//檢測服務(wù)器端是否有活動的客戶端連接
if (server.hasClient())
{
for (i = 0; i < MAX_SRV_CLIENTS; i++)
//查找空閑或者斷開連接的客戶端,并置為可用
{
if (!serverClients[i] || !serverClients[i].connected())
{
if (serverClients[i]) serverClients[i].stop(); //未連接,就釋放
serverClients[i] = server.available(); //分配新的
// Serial.print("New client: "); Serial.println(i);
continue;
}
}
//若沒有可用客戶端,則停止連接
WiFiClient serverClient = server.available();
serverClient.stop();
}
//檢查客戶端的數(shù)據(jù)
for (i = 0; i < MAX_SRV_CLIENTS; i++)
{
if (serverClients[i] && serverClients[i].connected())
{
if (serverClients[i].available())
{
Serial.println("Connected to client !!! ");
//從Telnet客戶端獲取數(shù)據(jù)
while (serverClients[i].available()) {
data[ind] = serverClients[i].read(); //讀取client端發(fā)送的字符
ind++;
}
for(int j=0;j < ind; j++)
{
Serial.print(data[j]);
}
Serial.println();
ind = 0;
serverClients[i].print("OK! Got your request."); //在client端回復(fù)
}
}
}
}
參考:
esp筆記(5)esp8266 與 TCP Sever 建立通訊_esp8266tcp server程序-CSDN博客文章來源:http://www.zghlxwxcb.cn/news/detail-716593.html
【ESP8266】ESP8266作為TCPServer與其他設(shè)備建立一個TCP網(wǎng)絡(luò)進(jìn)行局域網(wǎng)通訊_多個esp8266如何組網(wǎng)-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-716593.html
到了這里,關(guān)于ESP8266,手機(jī)與電腦之間的TCP通訊的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!