1. 程式人生 > >Unity Socket網路程式設計(TCP) 簡單例子-1

Unity Socket網路程式設計(TCP) 簡單例子-1

開發工具:Visual Studio、Unity

開發語言:C#

【伺服器端】

在VS建立一個C#空專案

程式碼如下:

  1. using System;

  2. using System.Collections.Generic;

  3. using System.Linq;

  4. using System.Text;

  5. using System.Threading.Tasks;

  6. using System.Net.Sockets;

  7. using System.Net;

  8. namespace NetworkServer

  9. {

  10. class Program

  11. {

  12. static void Main(string[] args)

  13. {

  14. /*建立一個socket物件*/

  15. //定址方式 套接字型別 協議方式

  16. Socket tcpSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

  17. /*繫結監聽訊息IP和埠號*/

  18. IPAddress ip = IPAddress.Parse("127.0.0.1");

  19. EndPoint endPoint = new IPEndPoint(ip, 6000);

  20. tcpSocket.Bind(endPoint);//向作業系統申請一個ip和埠號

  21. Console.WriteLine("伺服器端啟動完成");

  22. /*開始監聽客戶端的連線請求*/

  23. tcpSocket.Listen(100);//最多可以接收100個客戶端請求

  24. Socket socket = tcpSocket.Accept();//暫停當前執行緒,知道接收到客戶端發來的連線請求;當接收到客戶端的連線請求後,在本地伺服器建立一個socket與客戶端連線,並返回出來

  25. Console.WriteLine("有個客戶端連線進來");

  26. /*向客戶端傳送訊息*/

  27. string messge;

  28. messge="你好,我有什麼可以幫助到你嗎";

  29. var date=ASCIIEncoding.UTF8.GetBytes(messge);

  30. socket.Send(date);

  31. /*從客戶端接收訊息*/

  32. byte[] bt=new byte[1024];//設定一個訊息接收緩衝區

  33. int message=socket.Receive(bt);//該狀態處於一個暫停狀態,知道接收到訊息,並返回位元組數

  34. Console.WriteLine("接收到從客戶端發來的訊息:"+ASCIIEncoding.UTF8.GetString(bt));

  35. Console.ReadLine();

  36. }

  37. }

  38. }

【客戶端】

在unity下建立一個C#指令碼,將其掛載在main camera上,用一個按鈕觸發函式

程式碼如下:

  1. using UnityEngine;

  2. using System.Collections;

  3. using System.Net.Sockets;

  4. using System.Net;

  5. using System.Text;

  6. public class NetworkClient : MonoBehaviour

  7. {

  8. private Socket tcpSocket;

  9. public void OnBtnConnect()

  10. {

  11. //建立socket

  12. tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

  13. //連線伺服器

  14. tcpSocket.Connect(IPAddress.Parse("127.0.0.1"), 6000);

  15. Debug.Log("連線伺服器");

  16. //接收訊息

  17. byte[] bt = new byte[1024];

  18. int messgeLength = tcpSocket.Receive(bt);

  19. Debug.Log(ASCIIEncoding.UTF8.GetString(bt));

  20. //傳送訊息

  21. tcpSocket.Send(ASCIIEncoding.UTF8.GetBytes("我有個問題"));

  22. }

  23. }

點選按鈕

效果圖如下,表明已經連線成功