怎么通过socket在python和unity之间传数据
时间: 2024-03-20 07:44:48 浏览: 136
可以使用Python中的 `socket` 模块和Unity中的 `System.Net.Sockets` 命名空间来在两个应用程序之间进行数据传输。以下是一个简单的例子,演示如何通过socket在Python和Unity之间传输字符串数据:
Python端代码:
```python
import socket
HOST = '127.0.0.1' # IP地址
PORT = 5000 # 端口号
# 创建socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
s.bind((HOST, PORT))
# 开始监听连接
s.listen(1)
# 等待连接
conn, addr = s.accept()
print('Connected by', addr)
# 接收数据
data = conn.recv(1024)
print('Received', repr(data))
# 发送数据
conn.sendall(b'Hello from Python')
# 关闭连接
conn.close()
```
Unity端代码:
```csharp
using System;
using System.Net.Sockets;
using System.Text;
public class SocketClient : MonoBehaviour
{
private TcpClient client;
private NetworkStream stream;
private void Start()
{
try
{
// 连接Python服务器
string serverIP = "127.0.0.1";
int serverPort = 5000;
client = new TcpClient(serverIP, serverPort);
stream = client.GetStream();
// 发送数据
string message = "Hello from Unity";
byte[] data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
// 接收数据
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Debug.Log("Received: " + response);
}
catch (Exception ex)
{
Debug.Log(ex.ToString());
}
finally
{
// 关闭连接
if (stream != null)
stream.Close();
if (client != null)
client.Close();
}
}
}
```
在这个例子中,Python作为服务器监听连接并接收消息,Unity作为客户端连接服务器并发送消息。可以根据实际需求修改代码来传输不同类型的数据。
阅读全文