當前位置:首頁 » 雲伺服器 » udp自己搭建的伺服器onenet

udp自己搭建的伺服器onenet

發布時間: 2023-06-18 16:32:27

㈠ 如何將數據上傳到onenet伺服器

onenet是中移動物聯網公司面向大眾免費提供的物聯網平台。簡單點說就是一個存放、展示數據的伺服器。12

網路搜索onenet,進入之後在上方標題欄找到開發文檔鏈接,進入之後可以看到各種說明。
onenet支持http等多種協議,甚至為用戶開發了基於TCP/TP協議的EDP協議。
本文以http協議為例介紹如何上傳數據並在手機查看。
首先,注冊賬號,注冊頁面是這樣的

仔細點找到ADC_1和ADC_2 是不是最新數據是 15和60了呢?
最後,再給大家一些建議,http報文時非常復雜的,真的要想不出錯的話,你應該去看看這個協議。
json是js的一種數據交互格式,用於http伺服器與客戶端之間通信。當然,其他地方也可以用。如果你想真正做好一個產品,你應該去簡單了解json。
僅僅上傳數據是不夠的,如果你想要獲取數據,應該怎麼辦?前面提到http協議有4種數據交互方式,POST是其中一種,還有一種叫GET。等有空的時候我會寫如何用GET獲取一段json數據。

㈡ 物聯網(二)---原理分析[STM32+OneNET+ESP8266]

物聯網(一)---快速上手[STM32+OneNET+ESP8266]
物聯網(二)---原理分析[STM32+OneNET+ESP8266]
物聯網(三)---WEB下發命令控制單片機[STM32+OneNET+ESP8266]
物聯網(四)---搭建自己的TCP伺服器[ESP8266]
物聯網(五)---搭建自己的雲平台[ESP8266+Django]

上圖:

圖片上信息已經很豐富了,這里再稍微解釋一下。

單片機通過串口先發送 AT指令 給 ESP8266 完成參數配置,配置完成後將 ESP8266 斷電重啟一次,以使配置生效(這一步可由 AT指令 完成)。

ESP8266 重啟後將會自動連接 AT指令 所指定的 WIFI 名稱,連接成功後會通過串口返回 OK ,程序中可以通過檢測是否返回 OK 來判斷是否成功連接網路,下面使 ESP8266 的初始化程序。

你可能注意到有一個 1000ms 的延時,這個是為了等待完成數據發送、接收。

伺服器再接收到數據後會對所提交的數據做出響應。提交成功後,伺服器會返回數據如下:

這里多 ESP8266 也產生了一個 WIFI 信號,這是由於使用了 AT指令 配置了 AP+STA 模式, ESP8266 在這里可以充當一個中繼的角色.

這里要注意的是,必須選擇你電腦熱點的介面,不能是其他介面,否則數據是無法查看到的,這里我選擇的是我電腦的熱點。

下面的 {"errno":0,"error":"succ"} 也恰好和我們前面串口助手裡看到的信息相符合。

如果和上一片文章一樣配置好了的話,就可以在伺服器端OneNET上查看數據了,像下面這樣。

㈢ VLC播放器搭建伺服器(TCP和UDP方式)

伺服器操作流程

客戶端操作:

伺服器操作:

客戶端操作:

既有基於TCP的RTP,也有基於UDP的RTP,但抓包發現,VLC的RTP是基於UDP的。
操作模式與UDP一致。

VLC的http方式搭建的流媒體伺服器是用TCP方式進行數據傳輸的,操作方式與RTSP一致。

㈣ 如何搭建udp echo server

具體配置過程:
1、打開STM32CubeMX,並選擇好相應的晶元。文中的晶元為STM32F207VCT6,選擇後如下圖:

2、配置RCC時鍾、ETH、PA8以及使能LWIP;
由於此處我們的開發板硬體上為RMII方式,因此選擇ETH-RMII,若有同志的開發板為MII方式,請參考MII的配置方法,此處只針對RMII;
RCC選擇外部時鍾源,另外勾選MCO1,軟體會自動將PA8配置為MCO1模式,該引腳對於RMII方式很重要,用於為PHY晶元提供50MHz時鍾;
使能LWIP;

3、時鍾樹的相關配置,必須保證MCO1輸出為50Mhz,如果這個頻率不對會導致PHY晶元無法工作;
我這里因為晶元為207VCT6,為了使MCO1輸出為50Mhz,做了PLL倍頻參數的一些調整,總體如下:(同志們配置時可根據自己的晶元靈活配置,但需保證MCO1的輸出為50Mhz)

4、ETH、LWIP、RCC相關參數設置;
至此,比較重要的都在前面了,但是還有一點仍需要注意,即PA8引腳輸出速度,幾次不成功都是因為這個引腳沒注意。

後續的參數設置可以根據同志們自己的需求分別設置,這里給出我的設置供參考;
ETH參數保持默認,但中斷勾選一下;

LWIP參數設置如下:(因為我這里是配置UDP伺服器,IP選擇靜態分配)

5、生成工程,做最後的函數修改;
給生成的工程添加UDP伺服器的初始化以及埠綁定等相關函數;
我這里直接將之前的官方常式中的UDP伺服器文件加進來,如下:

之後將.c文件添加到用戶程序,主函數添加Udp的.h頭文件;如下:(udp文件的具體內容在後面給出)

6、主函數還需要添加一下幾個函數,在這里不對函數作用及實現原理講解,僅做添加說明。

附:udp_echoserver相關文件內容(該文件為官方的示常式序,版權歸官方,此處做轉載)
udp_echoserver.c的內容如下:

/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "lwip/pbuf.h"
#include "lwip/udp.h"
#include "lwip/tcp.h"
#include
#include

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define UDP_SERVER_PORT 7 /* define the UDP local connection port */
#define UDP_CLIENT_PORT 7 /* define the UDP remote connection port */

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port);

/* Private functions ---------------------------------------------------------*/

/**
* @brief Initialize the server application.
* @param None
* @retval None
*/
void udp_echoserver_init(void)
{
struct udp_pcb *upcb;
err_t err;

/* Create a new UDP control block */
upcb = udp_new();

if (upcb)
{
/* Bind the upcb to the UDP_PORT port */
/* Using IP_ADDR_ANY allow the upcb to be used by any local interface */
err = udp_bind(upcb, IP_ADDR_ANY, UDP_SERVER_PORT);

if(err == ERR_OK)
{
/* Set a receive callback for the upcb */
udp_recv(upcb, udp_echoserver_receive_callback, NULL);
}
}
}

/**
* @brief This function is called when an UDP datagrm has been received on the port UDP_PORT.
* @param arg user supplied argument (udp_pcb.recv_arg)
* @param pcb the udp_pcb which received data
* @param p the packet buffer that was received
* @param addr the remote IP address from which the packet was received
* @param port the remote port from which the packet was received
* @retval None
*/
void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb, struct pbuf *p, const ip_addr_t *addr, u16_t port)
{

/* Connect to the remote client */
udp_connect(upcb, addr, UDP_CLIENT_PORT);

/* Tell the client that we have accepted it */
udp_send(upcb, p);

/* free the UDP connection, so we can accept new clients */
udp_disconnect(upcb);

/* Free the p buffer */
pbuf_free(p);

}

udp_echoserver.h的內容如下:

#ifndef __ECHO_H__
#define __ECHO_H__

void udp_echoserver_init(void);

#endif /* __MINIMAL_ECHO_H */

7、至此,所有的工作完成,編譯工程,下載至開發板。由於udp_echoserver中綁定的埠號為7,這里我們通過測試工具測試網路的功能,

㈤ udp組播伺服器地址填什麼

地址使用的是D類IP地址(224.0.0.0到239.255.255.255)。
UDP組播的基本步驟:創建udp socket、bind、加入組播組、發送/接收數據、close。
組播傳輸:數據發送者(源數據)將同一數據發送到多個接受者(組播組成員)。無論有多少個接受者,在整個網路鏈路上,只有一份該數據(在特殊場合,可以節省帶寬,減少主幹網路阻塞)。

㈥ Python搭建的udp伺服器一直錯誤,不知道什麼問題,找了個成功的我電腦也不響應

排查發現是防火牆的問題:


解決方案:

單獨設置某個應用示是否可以通過防火牆進行通信

打開防火牆後,可以接收到udp信息了(或者,關閉一下防火牆,再測試)

㈦ Socket編程如何搭建一個外網可以訪問的伺服器

步驟:
1,和代理建立tcp聯接。
2,向代理發送版本的請求信息:
void CCommunicator::SendVer()
{
int datasize = 6;
char tempbuf[6];
tempbuf[0]=5;
tempbuf[1]=4;//標示後面所根的字接數
tempbuf[2]=0;
tempbuf[3]=1;
tempbuf[4]=2;
tempbuf[5]=3;
int senddatalen;
senddatalen=send(m_sock,(char*)tempbuf,6,0);
}
這一步如果失敗,斷開建立的tcp聯接,如果成功,如果需要用戶驗證則進行步驟3,否則進行4.
3,如果需要用戶驗證,則類似:
BOOL CCommunicator::SendUserTest()
{
int usernamelen=0;
int userpasslen=0;
usernamelen=m_strTestUserName.GetLength();
userpasslen=m_strTestUserPass.GetLength();
char tempbuf[100];
tempbuf[0]=5;
tempbuf[1]=usernamelen;//標示後面所根的字接數
strcpy(&tempbuf[2],m_strTestUserName);
tempbuf[2+usernamelen]=userpasslen;
strcpy((char*)&tempbuf [3+usernamelen],m_strTestUserPass);
int senddatalen;
int len;
len=usernamelen+userpasslen+3;
senddatalen=send(m_sock,(char*)tempbuf,len,0);
} 如果失敗,斷開建立的tcp聯接, 如果用戶返回成功,步驟4.
4,發送請求的協議類似:
void CCommunicator::SendRequestUDP()
{
int const datasize=10;
BYTE tempbuf[datasize]; tempbuf[0]=5;
tempbuf[1]=3;//標示UDP連接
tempbuf[2]=0;
tempbuf[3]=1;
tempbuf[4]=0;
tempbuf[5]=0;
tempbuf[6]=0;
tempbuf[7]=0;
*((SHORT*)(&(tempbuf[8])))=m_uBindUDPPort; //UDP在客戶端綁定的埠,就是你本地機器的做udp數據傳送的埠調用
//socket函數後,再調用bind()來邦定一個埠。
char temp;
temp=tempbuf[8];
tempbuf[8]=tempbuf[9];
tempbuf[9]=temp;
int senddatalen=send(m_sock,(char*)tempbuf,datasize,0);
}
如果失敗,斷開建立的tcp聯接,如果返回成功,驗證完畢!步驟5
5,真正的數據傳送,用代理傳送的時候,數據包的前面加上10個位元組類似:
void CCommunicator::CopyDataHead(BYTE * ptempbuf)
{
struct in_addr addr;
addr.s_addr=inet_addr(「202.220.33.333」);//這個ip是伺服器端的ip
ptempbuf[0]=0;
ptempbuf[1]=0;
ptempbuf[2]=0;
ptempbuf[3]=1;
ptempbuf[4]=(char)addr.S_un.S_un_b.s_b1;
ptempbuf[5]=(char)addr.S_un.S_un_b.s_b2;
ptempbuf[6]=(char)addr.S_un.S_un_b.s_b3;
ptempbuf[7]=(char)addr.S_un.S_un_b.s_b4;
*((SHORT*)(&(ptempbuf[8])))=m_uServerUDPPort;//伺服器的埠,就是你最終要發到那個伺服器的埠,也就是你的qq伺服器。
char temp;
temp=ptempbuf[8];
ptempbuf[8]=ptempbuf[9];
ptempbuf[9]=temp;
}
真正發送的時候類似:
int CCommunicator::SendBufferUDP(LPBYTE lpBuf,int nLen)
{
BYTE tempbuf[1000];
int iHeadData=0;
struct sockaddr_in her;
her.sin_family=AF_INET;
her.sin_addr.s_addr=inet_addr(m_szProxyAddr);//代理伺服器
her.sin_port=htons(m_uSocksPort);//發送請求的時候返回的代理伺服器端的埠,記住,這是最重要的。
CopyDataHead(tempbuf);
iHeadData=10;
nLen=nLen+10;
int addr_len;
addr_len=sizeof(struct sockaddr);
CopyMemory((char*)&tempbuf[iHeadData],lpBuf,nLen);
int returndatalen=sendto(m_socket,(char *)tempbuf,nLen,0,(struct sockaddr *)&her,addr_len);

㈧ UDP通信求助各位大大: 要寫個UDP通信的程序作為伺服器,有單個網卡,多個IP地址(三個)


簡單的說是這樣一個過程:無獨立ip的客戶端一般是某個單位區域網內的某個主機,沒有固定的ip,其ip地址是通過dhcp協議動態分配得到的。但這個單位肯定會有一個獨立的B類或者C類地址,區域網內的主機向伺服器發出請求時通過這個ip,伺服器響應也會通過這個ip到達所在的區域網,然後到達所在主機;

㈨ 如何搭建自己的NTP伺服器

  1. NTP伺服器【Network Time Protocol(NTP)】是用來使計算機時間同步化的一種協議,它可以使計算機對其伺服器或時鍾源(如石英鍾,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標准間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。時間按NTP伺服器的等級傳播。按照離外部UTC源的遠近把所有伺服器歸入不同的Stratum(層)中。


  2. 網路時間協議(NTP)用來同步網路上不同主機的系統時間。你管理的所有主機都可以和一個指定的被稱為 NTP 伺服器的時間伺服器同步它們的時間。而另一方面,一個 NTP 伺服器會將它的時間和任意公共 NTP 伺服器,或者你選定的伺服器同步。由 NTP 管理的所有系統時鍾都會同步精確到毫秒級。

  3. 在公司環境中,如果他們不想為 NTP 傳輸打開防火牆,就有必要設置一個內部 NTP 伺服器,然後讓員工使用內部伺服器而不是公共 NTP 伺服器。在這個指南中,我們會介紹如何將一個 CentOS 系統配置為 NTP 伺服器。在介紹詳細內容之前,讓我們先來簡單了解一下 NTP 的概念。

  4. 為什麼我們需要 NTP?

  5. 由於製造工藝多種多樣,所有的(非原子)時鍾並不按照完全一致的速度行走。有一些時鍾走的比較快而有一些走的比較慢。因此經過很長一段時間以後,一個時鍾的時間慢慢的和其它的發生偏移,這就是常說的 「時鍾漂移」 或 「時間漂移」。為了將時鍾漂移的影響最小化,使用 NTP 的主機應該周期性地和指定的 NTP 伺服器交互以保持它們的時鍾同步。

  6. 在不同的主機之間進行時間同步對於計劃備份、入侵檢測記錄、分布式任務調度或者事務訂單管理來說是很重要的事情。它甚至應該作為日常任務的一部分。

  7. NTP 的層次結構

  8. NTP 時鍾以層次模型組織。層級中的每層被稱為一個 stratum(階層)。stratum 的概念說明了一台機器到授權的時間源有多少 NTP 跳。

  9. Stratum 0 由沒有時間漂移的時鍾組成,例如原子時鍾。這種時鍾不能在網路上直接使用。Stratum N (N > 1) 層伺服器從 Stratum N-1 層伺服器同步時間。Stratum N 時鍾能通過網路和彼此互聯。

  10. NTP 支持多達 15 個 stratum 的層級。Stratum 16 被認為是未同步的,不能使用的。

  11. 准備 CentOS 伺服器

  12. 現在讓我們來開始在 CentOS 上設置 NTP 伺服器。

  13. 首先,我們需要保證正確設置了伺服器的時區。在 CentOS 7 中,我們可以使用 timedatectl 命令查看和更改伺服器的時區(比如,"Australia/Adelaide",LCTT 譯註:中國可設置為 Asia/Shanghai )

  14. 代碼如下:

  15. # timedatectl list-timezones | grep Australia

  16. # timedatectl set-timezone Australia/Adelaide

  17. # timedatectl

  18. 繼續並使用 yum 安裝需要的軟體

  19. 代碼如下:

  20. # yum install ntp

  21. 然後我們會添加全球 NTP 伺服器用於同步時間。

  22. 代碼如下:

  23. # vim /etc/ntp.conf

  24. server 0.oceania.pool.ntp.org

  25. server 1.oceania.pool.ntp.org

  26. server 2.oceania.pool.ntp.org

  27. server 3.oceania.pool.ntp.org

  28. 默認情況下,NTP 伺服器的日誌保存在 /var/log/messages。如果你希望使用自定義的日誌文件,那也可以指定。

  29. 復制代碼

  30. 代碼如下:

  31. logfile /var/log/ntpd.log

  32. 如果你選擇自定義日誌文件,確保更改了它的屬主和 SELinux 環境。

  33. 復制代碼

  34. 代碼如下:

  35. # chown ntp:ntp /var/log/ntpd.log

  36. # chcon -t ntpd_log_t /var/log/ntpd.log

  37. 現在初始化 NTP 服務並確保把它添加到了開機啟動。

  38. 代碼如下:

  39. # systemctl restart ntp

  40. # systemctl enable ntp

  41. 驗證 NTP Server 時鍾

  42. 我們可以使用 ntpq 命令來檢查本地伺服器的時鍾如何通過 NTP 同步。

  43. 下面的表格解釋了輸出列。

  44. remote 源在 ntp.conf 中定義。『*』 表示當前使用的,也是最好的源;『+』 表示這些源可作為 NTP 源;『-』 標記的源是不可用的。

  45. refid 用於和本地時鍾同步的遠程伺服器的 IP 地址。

  46. st Stratum(階層)

  47. t 類型。 'u' 表示單播(unicast)。其它值包括本地(local)、多播(multicast)、廣播(broadcast)。

  48. when 自從上次和伺服器交互後經過的時間(以秒數計)。

  49. poll 和伺服器的輪詢間隔,以秒數計。

  50. reach 表示和伺服器交互是否有任何錯誤的八進制數。值 337 表示 100% 成功(即十進制的255)。

  51. delay 伺服器和遠程伺服器來回的時間。

  52. offset 我們伺服器和遠程伺服器的時間差異,以毫秒數計。

  53. jitter 兩次取樣之間平均時差,以毫秒數計。

  54. 控制到 NTP 伺服器的訪問

  55. 默認情況下,NTP 伺服器允許來自所有主機的查詢。如果你想過濾進來的 NTP 同步連接,你可以在你的防火牆中添加規則過濾流量。

  56. # iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 123 -j ACCEPT

  57. # iptables -A INPUT -p udp --dport 123 -j DROP

  58. 該規則允許從 192.168.1.0/24 來的 NTP 流量(埠 UDP/123),任何其它網路的流量會被丟棄。你可以根據需要更改規則。

  59. 配置 NTP 客戶端

  60. 1. Linux

  61. NTP 客戶端主機需要 ntpupdate 軟體包來和伺服器同步時間。可以輕松地使用 yum 或 apt-get 安裝這個軟體包。安裝完軟體包之後,用伺服器的 IP 地址運行下面的命令。

  62. 代碼如下:

  63. # ntpdate

  64. 基於 RHEL 和 Debian 的系統命令都相同。

  65. 2. Windows

  66. 如果你正在使用 Windows,在日期和時間設置(Date and Time settings)下查找網路時間(Internet Time)。

  67. 3. Cisco 設備

  68. 如果你想要同步 Cisco 設備的時間,你可以在全局配置模式下使用下面的命令。

  69. 代碼如下:

  70. # ntp server

  71. 來自其它廠家的支持 NTP 的設備有自己的用於網路時間的參數。如果你想將設備和 NTP伺服器同步時間,請查看設備的說明文檔。

  72. 結論

  73. 總而言之,NTP 是在你的所有主機上同步時鍾的一個協議。我們已經介紹了如何設置 NTP 伺服器並使支持 NTP 的設備和伺服器同步時間。

㈩ 如何修正安卓虛擬機收不到udp包的問題

前言
當我們做安卓開發時,大多數人還是習慣用虛擬機,畢竟真機巴拉來巴拉去的不如滑鼠方便,尤其是調試一些功能模塊時,比如socket udp , 下文說明如何用as+虛擬機調試 socket udp, 實測

如何搭建udp伺服器和客戶端不提了,簡單的搭建隨便找一個吧
首先我們的前提是 我們在pc上建立了一個UDP伺服器,目的是通過這伺服器給虛擬機發送一個udp包
但如何發送這個包呢?
如果想當然的這樣做在server上給"127.0.0.1:9014"發送包,然後在虛擬機的9014埠接受包,你會發現無論發多少次,虛擬機什麼都收不到。 原因是,你這個包並不是發給虛擬機了,而是發給了本地埠,
也許你會說,給虛擬機發應該用虛擬機的ip地址,好的,通過嘗試我們發現給虛擬機的ip地址+9014埠,仍然無法收到。(我用工具查看的虛擬機ip地址是10.0.2.15)
正確步驟
1.把PC埠9014映射到虛擬機,意思就是當PC 9014埠收到udp包,它會轉發給虛擬機相應的埠
使用windows程序telnet即可達到映射的目的,(注意Telnet在win10需要開啟,可查找怎麼開啟這個程序)
打開cmd 輸入如下命令連接到本地虛擬機
telnet localhost 5554
連接成功後他會提示你輸入驗證,並告訴你驗證碼在哪裡

熱點內容
php樹菜單 發布:2025-02-09 10:04:10 瀏覽:359
linux保存ip 發布:2025-02-09 10:04:10 瀏覽:23
四川霜狼伺服器怎麼樣 發布:2025-02-09 10:02:44 瀏覽:145
Vs中h編譯選項是灰的 發布:2025-02-09 10:01:59 瀏覽:556
安卓43怎麼升級44 發布:2025-02-09 09:51:33 瀏覽:463
美國雲伺服器快還是香港快 發布:2025-02-09 09:34:33 瀏覽:988
怎麼解壓qq文件 發布:2025-02-09 09:18:14 瀏覽:581
安卓最新怎麼調靈敏度更穩 發布:2025-02-09 09:12:44 瀏覽:400
豌豆莢如何用安卓手機下載 發布:2025-02-09 09:11:57 瀏覽:213
吃雞腳本輔助 發布:2025-02-09 09:09:29 瀏覽:6