Unity Socket 联机教程:使用 Python 实现服务器和客户端代码
以下是使用 Unity 的 Socket 进行联机功能的 Python 代码示例,涵盖了 Unity 客户端和 Python 服务器两部分代码。
Unity 端
using UnityEngine;
using System.Net.Sockets;
using System.Text;
public class SocketClient : MonoBehaviour {
private TcpClient client;
private NetworkStream stream;
// 连接服务器
public void Connect() {
client = new TcpClient();
client.Connect('127.0.0.1', 8888);
stream = client.GetStream();
}
// 发送消息
public void SendMessage(string message) {
byte[] data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
Debug.Log('Send message: ' + message);
}
// 接收消息
public string ReceiveMessage() {
byte[] data = new byte[1024];
int length = stream.Read(data, 0, data.Length);
string message = Encoding.UTF8.GetString(data, 0, length);
Debug.Log('Receive message: ' + message);
return message;
}
// 关闭连接
public void Close() {
stream.Close();
client.Close();
}
}
Python 端
import socket
server_address = ('127.0.0.1', 8888)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(server_address)
sock.listen(1)
print('Waiting for a connection...')
connection, client_address = sock.accept()
try:
print('Connection from', client_address)
while True:
data = connection.recv(1024)
if not data:
break
message = data.decode('utf-8')
print('Receive message:', message)
response = 'Hello, ' + message
connection.sendall(response.encode('utf-8'))
print('Send message:', response)
finally:
connection.close()
该示例演示了一个简单的回声服务器,它会将接收到的来自 Unity 客户端的消息回传给客户端。你可以根据需要修改此示例来实现你自己的联机逻辑。
注意:
- 请确保你的 Unity 项目已添加
System.Net.Sockets命名空间。 - 服务器和客户端必须使用相同的端口号。
- 为了方便调试,可以使用
127.0.0.1作为 IP 地址,表示本地主机。 - 你可以根据需要修改代码,实现更复杂的联机功能。
本教程仅供参考,更多信息请查看 Unity 和 Python 的官方文档。
原文地址: https://www.cveoy.top/t/topic/mMDQ 著作权归作者所有。请勿转载和采集!