日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3d简单的socket通信

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3d简单的socket通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

vs2010或其他創建C#工程

C#端代碼一:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Sockets;namespace SoketDemo {class Program{// 設置連接端口const int portNo = 500;static void Main(string[] args){// 初始化服務器IPSystem.Net.IPAddress localAdd = System.Net.IPAddress.Parse("127.0.0.1");// 創建TCP偵聽器TcpListener listener = new TcpListener(localAdd, portNo);listener.Start();// 顯示服務器啟動信息Console.WriteLine("Server is starting...\n");// 循環接受客戶端的連接請求while (true){ChatClient user = new ChatClient(listener.AcceptTcpClient());// 顯示連接客戶端的IP與端口Console.WriteLine(user._clientIP + " is joined...\n");}}}

代碼二:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Net.Sockets;namespace SoketDemo {class ChatClient{public static Hashtable ALLClients = new Hashtable(); // 客戶列表private TcpClient _client; // 客戶端實體public string _clientIP; // 客戶端IPprivate string _clientNick; // 客戶端昵稱private byte[] data; // 消息數據private bool ReceiveNick = true;public ChatClient(TcpClient client){this._client = client;this._clientIP = client.Client.RemoteEndPoint.ToString();// 把當前客戶端實例添加到客戶列表當中ALLClients.Add(this._clientIP, this);data = new byte[this._client.ReceiveBufferSize];// 從服務端獲取消息client.GetStream().BeginRead(data, 0, System.Convert.ToInt32(this._client.ReceiveBufferSize), ReceiveMessage, null);}// 從客戶端獲取消息public void ReceiveMessage(IAsyncResult ar){int bytesRead;try{lock (this._client.GetStream()){bytesRead = this._client.GetStream().EndRead(ar);}if (bytesRead < 1){ALLClients.Remove(this._clientIP);Broadcast(this._clientNick + " has left the chat");return;}else{string messageReceived = System.Text.Encoding.ASCII.GetString(data, 0, bytesRead);if (ReceiveNick){this._clientNick = messageReceived;Broadcast(this._clientNick + " has joined the chat.");//this.sendMessage("hello");ReceiveNick = false;}else{Broadcast(this._clientNick + ">" + messageReceived);}}lock (this._client.GetStream()){this._client.GetStream().BeginRead(data, 0, System.Convert.ToInt32(this._client.ReceiveBufferSize), ReceiveMessage, null);}}catch (Exception ex){ALLClients.Remove(this._clientIP);Broadcast(this._clientNick + " has left the chat.");}}// 向客戶端發送消息public void sendMessage(string message){try{System.Net.Sockets.NetworkStream ns;lock (this._client.GetStream()){ns = this._client.GetStream();}// 對信息進行編碼byte[] bytesToSend = System.Text.Encoding.ASCII.GetBytes(message);ns.Write(bytesToSend, 0, bytesToSend.Length);ns.Flush();}catch (Exception ex){}}// 向客戶端廣播消息public void Broadcast(string message){Console.WriteLine(message);foreach (DictionaryEntry c in ALLClients){((ChatClient)(c.Value)).sendMessage(message + Environment.NewLine);}}} }

?unity端代碼,直接掛載到攝像頭:

using UnityEngine; using System.Collections;using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Net.Sockets;public class ClientHandler : MonoBehaviour {const int portNo = 500;private TcpClient _client;byte[] data;public string nickName = "";public string message = "";public string sendMsg = "";void OnGUI(){nickName = GUI.TextField(new Rect(10, 10, 100, 20), nickName);message = GUI.TextArea(new Rect(10, 40, 300, 200), message);sendMsg = GUI.TextField(new Rect(10, 250, 210, 20), sendMsg);if (GUI.Button(new Rect(120, 10, 80, 20), "Connect")){//Debug.Log("hello");this._client = new TcpClient();this._client.Connect("127.0.0.1", portNo);data = new byte[this._client.ReceiveBufferSize];//SendMessage(txtNick.Text); SendMessage(nickName);this._client.GetStream().BeginRead(data, 0, System.Convert.ToInt32(this._client.ReceiveBufferSize), ReceiveMessage, null);};if (GUI.Button(new Rect(230, 250, 80, 20), "Send")){SendMessage(sendMsg);sendMsg = "";};}public void SendMessage(string message){try{NetworkStream ns = this._client.GetStream();byte[] data = System.Text.Encoding.ASCII.GetBytes(message);ns.Write(data, 0, data.Length);ns.Flush();}catch (Exception ex){//MessageBox.Show(ex.ToString()); }}public void ReceiveMessage(IAsyncResult ar){try{int bytesRead;bytesRead = this._client.GetStream().EndRead(ar);if (bytesRead < 1){return;}else{Debug.Log(System.Text.Encoding.ASCII.GetString(data, 0, bytesRead));message += System.Text.Encoding.ASCII.GetString(data, 0, bytesRead);}this._client.GetStream().BeginRead(data, 0, System.Convert.ToInt32(this._client.ReceiveBufferSize), ReceiveMessage, null);}catch (Exception ex){}} }

這樣就得了。

?

轉載于:https://www.cnblogs.com/boye666/p/6531276.html

總結

以上是生活随笔為你收集整理的Unity3d简单的socket通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲乱强伦 | 97av在线播放| 天天干天天透 | av免费在线观看网址 | 精品国产三级片在线观看 | 天天操夜夜添 | 丝袜 亚洲 另类 欧美 重口 | 日韩午夜在线 | 亚洲欧美日韩第一页 | 青青操狠狠干 | 男女性生活视频网站 | 欧美一级片一区二区 | 美女视频久久 | 岛国av一区二区三区 | 国产一区二区视频免费观看 | 国产欧美日韩高清 | www.狠狠插 | 久久精品视频一区二区三区 | 全黄一级播放 | 超碰人人cao| 日本黄xxxxxxxxx100| 西西人体大胆4444ww张筱雨 | 亚洲色图 美腿丝袜 | 手机福利在线 | 91网站在线免费观看 | 黄色免费观看网站 | 三级欧美韩日大片在线看 | 午夜精彩视频 | 色亚洲成人 | 亚洲欧美强伦一区二区 | 深夜福利91 | 西西大胆午夜视频 | av毛片一区 | 欧美男女交配 | 日日夜夜精品免费视频 | 成人网一区 | 九九热伊人 | www.av色| 色婷婷六月 | 浪漫樱花在线观看高清动漫 | 国产精品99久久久久久久久久久久 | 精品国产免费视频 | 日韩在线观看免费全 | 亚洲一区精品在线 | 成人一级片视频 | 丁香一区二区三区 | 欧美日韩在线视频播放 | 色站av| 久久精品欧美一区二区三区麻豆 | 亚洲人成人一区二区在线观看 | 一级a毛片| 操极品女神 | 久久精品无码一区二区三区免费 | 国产精品国产三级国产 | 久久久久久久久久久影视 | 蜜臀久久99精品久久久久宅男 | 国产男男gay网站 | 欧美日韩激情 | 三级全黄的视频 | 综合久久一区二区 | 日韩在线免费av | 成人黄色片免费看 | 日本免费高清一区二区 | 精品国产伦一区二区三区免费 | 国产叼嘿视频在线观看 | 亚洲成人少妇 | 美国av片| 麻豆md0077饥渴少妇 | 日韩一卡二卡三卡四卡 | 天天插天天射 | 国产原创精品 | 日韩中文字幕亚洲精品欧美 | 国产精品大全 | 亚洲第一黄色网址 | 男女视频一区 | 美女爱爱视频 | 久久麻豆精品 | 日韩成人午夜电影 | 成年在线视频 | 国产区福利 | 老女人综合网 | 亚洲九九色 | 操操日日 | 亚洲欧洲日韩国产 | 日韩城人免费 | 国产欧美精品aaaaaa片 | 欧美一区二区日韩一区二区 | 日本在线中文字幕专区 | 久久久久99精品成人片直播 | 日本不卡1 | www.在线观看av | 欧美成人一级视频 | 六月综合网 | 乱短篇艳辣500篇h文最新章节 | 一级少妇精品久久久久久久 | www欧美精品 | 岛国av在线 | 国产精品亚洲天堂 | 91九色在线播放 |