Unity利用UDP通訊(傳送字串)
客戶端程式碼如下:
using UnityEngine; using System.Collections; using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class UDPClient : MonoBehaviour { public string recvStr; private string UDPClientIP; string str = "客戶端01傳送訊息"; Socket socket; EndPoint serverEnd; IPEndPoint ipEnd; byte[] recvData = new byte[1024]; byte[] sendData = new byte[1024]; int recvLen = 0; Thread connectThread; void Start() { UDPClientIP = "168.178.2.11";//服務端的IP.自己更改 UDPClientIP = UDPClientIP.Trim(); InitSocket(); } void InitSocket() { ipEnd = new IPEndPoint(IPAddress.Parse(UDPClientIP), 7401); socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); serverEnd = (EndPoint)sender; print("等待連線"); SocketSend(str); print("連線"); //開啟一個執行緒連線 connectThread = new Thread(new ThreadStart(SocketReceive)); connectThread.Start(); } void SocketSend(string sendStr) { //清空 sendData = new byte[1024]; //資料轉換 sendData = Encoding.UTF8.GetBytes(sendStr); //傳送給指定服務端 socket.SendTo(sendData, sendData.Length, SocketFlags.None, ipEnd); } //接收伺服器資訊 void SocketReceive() { while (true) { recvData = new byte[1024]; try { recvLen = socket.ReceiveFrom(recvData, ref serverEnd); } catch (Exception e) { } print("資訊來自: " + serverEnd.ToString()); if (recvLen > 0) { recvStr = Encoding.UTF8.GetString(recvData, 0, recvLen); } print(recvStr); } } //連線關閉 void SocketQuit() { //關閉執行緒 if (connectThread != null) { connectThread.Interrupt(); connectThread.Abort(); } //最後關閉socket if (socket != null) socket.Close(); } void OnApplicationQuit() { SocketQuit(); } void Update() { } }
伺服器程式碼如下:
using UnityEngine; using System.Collections; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; public class UDPServer : MonoBehaviour { public string ipAddress = "168.178.2.11"; public int ConnectPort = 7401; public string recvStr; Socket socket; EndPoint clientEnd; IPEndPoint ipEnd; string sendStr; byte[] recvData = new byte[1024]; byte[] sendData = new byte[1024]; int recvLen; Thread connectThread; //初始化 void InitSocket() { ipEnd = new IPEndPoint(IPAddress.Parse(ipAddress), ConnectPort); socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket.Bind(ipEnd); //定義客戶端 IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); clientEnd = (EndPoint)sender; print("等待連線資料"); //開啟一個執行緒連線 connectThread = new Thread(new ThreadStart(SocketReceive)); connectThread.Start(); } void SocketSend(string sendStr) { sendData = new byte[1024]; sendData = Encoding.UTF8.GetBytes(sendStr); socket.SendTo(sendData, sendData.Length, SocketFlags.None, clientEnd); } //伺服器接收 void SocketReceive() { while (true) { recvData = new byte[1024]; recvLen = socket.ReceiveFrom(recvData, ref clientEnd); recvStr = Encoding.UTF8.GetString(recvData, 0, recvLen); Debug.Log("收到得資訊 " + recvStr); } } //連線關閉 void SocketQuit() { //關閉執行緒 if (connectThread != null) { connectThread.Interrupt(); connectThread.Abort(); } //最後關閉socket if (socket != null) socket.Close(); Debug.LogWarning("斷開連線"); } // Use this for initialization void Start() { InitSocket(); //在這裡初始化server } void OnApplicationQuit() { SocketQuit(); } }
對UDP通訊使用比較頻繁,還有傳送內容不僅僅侷限在字串,有時候還會發送結構體,以及Json格式的資料,具體的接收到的資訊解析方法要根據協議來解析。
相關推薦
Unity利用UDP通訊(傳送字串)
客戶端程式碼如下:using UnityEngine; using System.Collections; using System; using System.Net; using System.Net.Sockets; using System.Text; using
【Android開發—智慧家居系列】(四):UDP通訊傳送指令
【Android開發—智慧家居系列】(四):UDP通訊傳送指令 思路回顧 【1】手機連線WIFI模組 【2】UDP通訊對WIFI模組傳送指令,以和WIFI模組保持連線狀態 【3】UDP通訊對WIFI模組傳送指令,讓其搜尋可用的無線網,返回WIFI列表
在unity中用UDP實現傳送訊息機制
首先,用Unity新建兩個專案,然後一個寫Server,另一個寫Client。`using UnityEngine; using System.Collections; //引入庫 using System.Net; using System.Net.S
26 API-網路程式設計(網路概述,Socket通訊機制,UDP協議傳送和接收資料,TCP協議傳送和接收資料)
1:網路程式設計(理解) (1)網路程式設計:用Java語言實現計算機間資料的資訊傳遞和資源共享(2)網路程式設計模型 l網路模型一般是指 OSI(Open System Interconnection開放系統互連)參考模型 TCP/IP參考模型 (3)網路程式
微控制器利用串列埠通訊傳送溫度
/********該程式主要是利用DS18B20採集溫度,然後通過數碼管顯示溫度*************/ /*當程式收到上位機發送的命令之後,該程式會將當時的溫度值通過串列埠傳送給上位機*/ #i
【iOS】Socket/TCP 通訊 傳送 NSString 字串格式資料
Socket/TCP 原理這裡就不闡述了,網上一搜一大堆,直接上關鍵程式碼。 【注】iOS 目前有非常著名的第三方庫 CocoaAsyncSocket 可以使用,但是我們專案當時做大資料上報要求直接傳送 NSString 格式資料,所以自己寫了一個簡易版 TCP 連線,
MFC中利用CSocket實現UDP通訊
原始碼請到此處下載。 基本介面如下: UDP通訊時雙方地位是對等的,不用像TCP那樣要在伺服器端設定一個監聽Socket。 第一
Unity 與C#伺服器 實現Socket的UDP通訊(多客戶端)
前言 上一篇簡單的介紹了下Unity客戶端和伺服器的Socket通訊,但是還不能實現多個客戶端與伺服器的通訊,所以今天在這邊把前面的工程完善一下(使用的是上篇講到的UdpClient類來實現),實現多個客戶端與伺服器的udp通訊。效果圖如下,兩個客戶端可以向伺服器傳送訊息,
Qt學習之路十二——利用UDP進行通訊
一、UDP的特點UDP(使用者資料報協議)是一種簡單輕量級、不可靠、面向資料報,無連線的傳輸層協議。而TCP/IP協議卻是有連線的二、UDP適合應用的幾種情況1、網路資料大多為短訊息2、擁有大量客戶端3、對資料安全性無特殊要求4、網路負擔非常重,但對響應速度要求高。三、利用U
python 將字串轉化成16進位制進行UDP的傳送
轉載自:Python UDP Socket 16進位制資料傳送 | 北京小芽科技http://xiaoyatec.com/2015/12/08/python-udp-socket-16%E8%BF%9B%E5%88%B6%E6%95%B0%E6%8D%AE%E5%8F%91
Unity&網路:利用UDP實現動態監測區域網線上使用者及掉線事件。
概念: 伺服器-客戶端:一個抽象軟體概念。客戶端向伺服器傳送請求,伺服器根據請求給客戶端以服務。並非指一臺電腦。同一臺電腦可以利用多執行緒同時充當伺服器與客戶端的角色。有點像記者釋出會上的一問一答。 P2P:一個電腦既是客戶端也是伺服器。對於對方發來的請求可
QUdpSocket-Qt使用Udp通訊實現服務端和客戶端
array tle sig post 客戶端 種類型 可用 進行 += 版權聲明:若無來源註明,Techie亮博客文章均為原創。 轉載請以鏈接形式標明本文標題和地址: 本文標題:QUdpSocket-Qt使用Udp通訊實現服務端和客戶端 本文地址:http://t
java 實現udp通訊
ket 地址 upd void ESS util dst 服務端 unknown 需求:應用A(通常有多個)和應用B(1個)進行 socket通訊,應用A必須知道應用B的ip地址(在應用A的配置文件中寫死的),這個時候就必須把應用B的ip設成固定ip(但是某些時候如更換路由
RTOS_TINY中實現串列埠傳送字串控制LED
題目內容 在RTOS_TINY作業系統下實現以下目標: 有四個LED,使用AT89S52的4個引腳驅動它們分別以5Hz,8Hz,20Hz,32Hz的頻率閃爍。設使用12MHz的晶振。用串列埠助手,通過傳送 “TURN on 1”,使得LED1持續閃爍,並回顯“LED1 on”;傳送
socket-vs-udp-圖片傳送
結構體的傳送 UDP程式設計時經常需要使用sendto()和recvfrom()兩個函式,其中recvfrom()的函式原型是: ssize_t recvfrom( int sockfd, void *buf, size_t len, int flags,
Java UDP通訊聊天程式
編寫兩個新的VC程式,完成以下功能: 一個程式為服務端,建立UDP服務端套接字。 另外一個程式為客戶端,建立UDP客戶端套接字。 這兩個新程式可以互聯,完成一個基於TCP/IP網路的文字聊天程式。 因為TCP需要三次握手,所以只能一來一回的實現聊天程式,而UDP可以只負責
[LeetCode]利用Double類完成字串轉整數 (atoi)
Double.parseDouble(String str) 能把一個String型別的變數轉換為Double型別,而且利用丟擲的異常我們還可以很好的處理無法轉換的字串,故其非常適合做atoi,而之所以不用Integer.parseInteger是因為我們可能
利用strrchr函式從字串中分離字元
比如在用FIFO寫單伺服器多使用者的程式中,要分離出使用者請求行中的路徑,可以用strrchr函式。 #include <string.h> 函式原型:extern char * strrchr (const char *s, int c) 引數說明:s為一個字串的指標,c為
如何利用UDP協議封裝一個數據包
在如何封裝一個數據包上,是一個非常細緻的問題,而利用UDP協議來封裝的話,是比較簡單,讓我們一步步來分析典型的TCP/IP協議。一般來說一個典型的一個數據包,包括乙太網MAC頭+網路層IP資料頭+傳輸層UDP頭+要傳輸的資料。讓我們一層層來看看這些資料頭是如何構成的。 1、乙太網MAC頭
Node.js使用UDP通訊
Node.js 的 dgram 模組可以方便的建立udp服務,,以下是使用 dgram模組建立的udp服務和客戶端的一個簡單例子。 一、建立 UDP Server var dgram = require('dgram'); //建立 udp server var udp_server = dgram.cr