unity 在安卓平台、IOS平台下的Socket长连接访问,给出代码案例
时间: 2024-03-26 13:39:44 浏览: 160
以下是 Unity 在 Android 平台和 iOS 平台下使用 Socket 实现长连接访问的示例代码:
```csharp
using UnityEngine;
using System.Collections;
using System.Net.Sockets;
using System.Threading;
public class SocketExample : MonoBehaviour
{
private Socket socket;
private Thread receiveThread;
private bool isRunning = false;
void Start()
{
// 创建 Socket 对象
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 连接服务器
socket.Connect("192.168.1.100", 8888);
// 启动接收线程
isRunning = true;
receiveThread = new Thread(new ThreadStart(ReceiveMessage));
receiveThread.Start();
}
void OnDestroy()
{
// 关闭连接
isRunning = false;
if (receiveThread != null)
{
receiveThread.Join();
}
if (socket != null)
{
socket.Close();
}
}
void SendMessage(string message)
{
// 发送消息
byte[] data = System.Text.Encoding.UTF8.GetBytes(message);
socket.Send(data, data.Length, SocketFlags.None);
}
void ReceiveMessage()
{
// 接收消息
while (isRunning)
{
if (socket.Available > 0)
{
byte[] buffer = new byte[1024];
int length = socket.Receive(buffer, buffer.Length, SocketFlags.None);
string message = System.Text.Encoding.UTF8.GetString(buffer, 0, length);
Debug.Log(message);
}
else
{
Thread.Sleep(100);
}
}
}
}
```
上面的代码演示了如何在 Unity 中使用 Socket 实现 TCP 长连接访问,包括连接服务器、发送消息和接收消息。需要注意的是,在 Android 平台和 iOS 平台下,需要在 AndroidManifest.xml 和 Info.plist 文件中添加网络访问权限。同时,在 iOS 平台下,需要在 Info.plist 文件中添加 ATS(App Transport Security)例外,以允许非 HTTPS 的网络连接。
阅读全文