python作为服务端,unity作为客户端的视频流传输
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind(('192.168.1.6', 8080))
data, addr = server_socket.recvfrom(1024)
while True:
# 接收客户端数据
# 处理数据
server_socket.sendto('Hello from Python server'.encode(), addr) # 发送数据
IPEndPoint localEP;
UdpClient client;
IPEndPoint serverEP;
Thread thread = null;
void Start()
{
client = new UdpClient();
serverEP = new IPEndPoint(IPAddress.Parse("192.168.1.201"), 8080); // 服务器地址和端口
byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello from Unity client");
client.Send(data, data.Length, serverEP); // 发送数据
localEP = new IPEndPoint(IPAddress.Any, 0);
// 开启一个线程, 用于接受数据
thread = new Thread(new ThreadStart(Receive));
thread.Start();
print("waiting for UDP dgram");
}
//&& socketReceive.Connected
private void Receive()
{
while (thread.ThreadState == ThreadState.Running)
{
// 接受数据Buffer count是数据的长度
var data = client.Receive(ref localEP); // 接收数据
string response = System.Text.Encoding.UTF8.GetString(data);
//int count = socketReceive.ReceiveFrom(buffer, ref clientEnd);
Debug.Log(response);
}
}
注意:客户端要先向服务端发送一次消息,当服务端收到消息后确定客户端的信息,再发送消息,才能实现通信。具体原因我也不清楚。