溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

發(fā)布時(shí)間:2021-12-29 10:21:55 來(lái)源:億速云 閱讀:296 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么”吧!

1. 環(huán)境準(zhǔn)備

硬件準(zhǔn)備

  • 開發(fā)板

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

  • M26通信模組

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

軟件準(zhǔn)備

  • QCOM串口助手

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

文檔準(zhǔn)備

  • M26 AT命令手冊(cè)

此文檔來(lái)自于移遠(yuǎn)官方!閱讀本教程時(shí),關(guān)于AT指令的詳細(xì)說(shuō)明請(qǐng)參考該文檔!

切換開關(guān)

小熊派開發(fā)板右上角的開關(guān)撥到AT-PC一端,則模組直接與PC相連,方便調(diào)試。

所有工具和文檔均在『小熊派開源社區(qū)』公眾號(hào)回復(fù)“通信模組”獲取!

2. 模組信號(hào)查詢與網(wǎng)絡(luò)查詢AT指令

AT

指令:AT

功能:測(cè)試AT指令功能是否正常

示例:

AT

OK

AT+CPIN?

指令:AT+CPIN?

功能:查詢SIM卡是否正常,返回ready則表示SIM卡正常

示例:

AT+CPIN?

+CPIN: READY

OK

AT+CSQ

指令:AT+CSQ

功能:查詢模組的信號(hào)強(qiáng)度,第一個(gè)值為0-31則正常,99為不正常

示例:

AT+CSQ

+CSQ: 17,0

OK

AT+CREG?

指令:AT+CREG?

功能:查詢模組是否注冊(cè)上GSM網(wǎng)絡(luò),+CREG:0,1 表示已注冊(cè)上本地網(wǎng),+CREG:0,5表示注冊(cè)上漫游網(wǎng)。

示例:

AT+CREG?

+CREG: 0,1

OK

AT+CGREG?

指令:AT+CERGE?

功能:查詢模組是否注冊(cè)上GPRS網(wǎng)絡(luò),+CGREG:0,1 表示已注冊(cè)上本地網(wǎng),+CGREG:0,5表示注冊(cè)上漫游網(wǎng)。

示例:

AT+CGREG?

+CGREG: 0,1

OK

3. 激活移動(dòng)場(chǎng)景,獲取ip地址

必須在查詢GPRS網(wǎng)絡(luò)已正常注冊(cè)網(wǎng)絡(luò)的情況下進(jìn)行本節(jié)實(shí)驗(yàn)!

AT+QIFGTCNT=0

指令:AT+QIFGTCNT=0

功能:配置當(dāng)前場(chǎng)景

示例:

AT+QIFGCNT=0

OK

AT+QICSGP=1, "CMNET"

指令:AT+QICSGP=1, "CMNET"

功能:設(shè)置GPRS的APN,移動(dòng)CMNET,聯(lián)通UNINET

示例:

AT+QICSGP=1, "CMNET"

OK

AT+QIMODE=0

指令:AT+QIMODE=0

功能:設(shè)置數(shù)據(jù)傳輸模式,0表示非透?jìng)髂J剑?表示透?jìng)髂J?/p>

示例:

AT+QIMODE=0

OK

AT+QIDEACT

指令:AT+QIDEACT

功能:在激活GPRS場(chǎng)景之前先關(guān)閉GPRS場(chǎng)景,確保連接正確

示例:

AT+QIDEACT

DEACT OK

AT+QIREGAPP

指令:AT+QIREGAPP

功能:?jiǎn)?dòng)任務(wù)并設(shè)置接入點(diǎn)APN、用戶名和密碼

示例:

AT+QIREGAPP

OK

AT+QIACT

指令:AT+QIACT

功能:激活移動(dòng)場(chǎng)景

示例:

AT+QIACT

OK

AT+QILOCIP

指令:AT+QILOCIP

功能:查看模組獲取的IP地址

示例:

AT+QILOCIP

100.125.208.23

4. 基于 TCP 協(xié)議連接遠(yuǎn)程服務(wù)器通信實(shí)例

4.1. 搭建遠(yuǎn)程TCP服務(wù)器

首先我們需要搭建一個(gè)TCP服務(wù)器,有兩種方式:

  • 在服務(wù)器上使用Python、Java、C#等語(yǔ)言自行編寫服務(wù)器程序;

  • 在本地PC上使用網(wǎng)絡(luò)調(diào)試助手開啟TCP服務(wù)器;

因?yàn)镸26模組直接注冊(cè)的是公網(wǎng)ip地址,所以這里我們使用第一種方式,在Linux服務(wù)器上運(yùn)行一個(gè)Python編寫的tcp測(cè)試服務(wù)器:

本地PC使用的是局域網(wǎng),公網(wǎng)不可以直接根據(jù)ip地址訪問(wèn)到本PC,需要進(jìn)行內(nèi)網(wǎng)穿透,不推薦使用。

這里的Python程序如下:

# tcp-server.py

from socket import *

host = ''
port = 8000

# 創(chuàng)建server socket
server_socket = socket(AF_INET,SOCK_STREAM)

# 綁定socket監(jiān)聽(tīng)地址
server_addr = (host,port)
server_socket.bind(server_addr)

# 開始監(jiān)聽(tīng),最大允許連接數(shù)5
server_socket.listen(5)

# 處理連接請(qǐng)求
try:
    while True:
        print('waiting for connect...')
        #阻塞等待客戶端的連接 
        client_socket, client_addr = server_socket.accept()
        # 連接成功后,打印客戶端信息
        print('a client connnect from:', client_addr)

        while(True):
            # 向客戶端發(fā)送數(shù)據(jù)
            client_socket.send('Hello, client!'.encode())

            # 接收客戶端的數(shù)據(jù)
            data = client_socket.recv(1024)
            print('recv data is ', data.decode())

            # 接收到quit則關(guān)閉socket
            if "quit" in data.decode():
                break
        
        # 關(guān)閉socket
        client_socket.close()
        server_socket.close()
        print("socket closed.")
        break
except:
    client_socket.close()
    server_socket.close()
    print("socket closed.")

運(yùn)行:

python3 tcp-server.py

效果如下:

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

4.2. 模組連接服務(wù)器

查詢ip地址:

AT+QILOCIP

100.125.208.23

使用AT命令連接TCP服務(wù)器,其中第一個(gè)參數(shù)是協(xié)議類型,“TCP”則表示使用TCP協(xié)議,第二個(gè)參數(shù)是TCP服務(wù)器ip地址,也可以使用域名,最一個(gè)參數(shù)是TCP服務(wù)器開啟監(jiān)聽(tīng)的端口:

AT+QIOPEN=<mode>,<IPaddress>/<domain name>,<port>

示例:

AT+QIOPEN="TCP","122.51.89.94","8000"

OK

CONNECT OK

連接之后,在服務(wù)器端也可以看到:

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

4.2. 模組接收消息

模組連接到服務(wù)器后,服務(wù)器會(huì)自動(dòng)發(fā)送消息,模組會(huì)打印出收到的信息:

Hello, client!

4.3. 模組主動(dòng)發(fā)送消息

使用如下的命令即可向TCP服務(wù)器發(fā)送消息,首先設(shè)置要發(fā)送數(shù)據(jù)的字節(jié)數(shù),等待模組返回>后,輸入要發(fā)送的數(shù)據(jù)即可,如果發(fā)送的數(shù)據(jù)超過(guò)了設(shè)置的n個(gè)字節(jié),則只發(fā)送前n個(gè)字節(jié),后面的數(shù)據(jù)被認(rèn)為是無(wú)效數(shù)據(jù),不會(huì)發(fā)送:

AT+QISEND

>hello<0x1a>

示例:

Hello, client!AT+QISEND

> hello

SEND OK

發(fā)送成功看服務(wù)器上運(yùn)行的TCP服務(wù)器是否收到:

基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么

4.4. 關(guān)閉TCP連接

通信完畢之后,可以使用下面的命令關(guān)閉TCP連接:

AT+QICLOSE

示例:

AT+QICLOSE

CLOSE OK

到此,相信大家對(duì)“基于TCP協(xié)議連接遠(yuǎn)程服務(wù)器通信的方法是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

tcp
AI