Unity UDP通讯
发布日期:2021-05-08 13:41:42 浏览次数:27 分类:原创文章

本文共 2926 字,大约阅读时间需要 9 分钟。

UDPSend:发送端脚本,Ip为接收端本地Ip, port为自定义int类型(但是要与接收端port一致)
UDPReceive:接收端脚本,port为自定义int类型(但是要与发送端port一致)


using UnityEngine;using System.Net;using System.Net.Sockets;using System.Text;public class UDPSend : MonoBehaviour{
private string ip; //主机ip地址 private int port; private IPAddress ipAddress; private IPEndPoint endPoint; private Socket socket; private EndPoint server; private byte[] sendData; //发送内容,转化为byte字节 void Awake() {
ip = "192.168.1.100"; port = 8899; } //发送函数 public void Send(float value) //参数不是字符串时转化为string {
string msg = value.ToString("0"); //传递的值转化为string ipAddress = IPAddress.Parse(ip); //ip地址 endPoint = new IPEndPoint(ipAddress, port); //自定义端口号 socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint sender = new IPEndPoint(IPAddress.Any, 112); server = (EndPoint)sender; sendData = new byte[1024]; //定义发送字节大小 sendData = Encoding.Default.GetBytes(msg); //对msg编码 socket.SendTo(sendData, sendData.Length, SocketFlags.None, endPoint); //发送信息 } void Update() {
if (Input.GetKeyDown(KeyCode.A)) {
Send(12); } }}

using UnityEngine;using System.Net;using System.Net.Sockets;using System.Threading;using System.Text;public class UDPReceive : MonoBehaviour{
private IPEndPoint ipEndPoint; private Socket socket; private Thread thread; private byte[] bytes; //接收到的字节 private int bytesLength; //长度 public string receiveMsg = ""; //接收到的信息 public bool isOver; private int port; //端口号要与发送端一致 void Start() {
Init(); } //初始化 private void Init() {
ipEndPoint = new IPEndPoint(IPAddress.Any, port); socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); socket.Bind(ipEndPoint); thread = new Thread(new ThreadStart(Receive)); //开启一个线程,接收发送端的消息 thread.IsBackground = true; thread.Start(); } //接收消息函数 private void Receive() {
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); EndPoint remote = (EndPoint)sender; while (true) {
bytes = new byte[1024]; bytesLength = socket.ReceiveFrom(bytes, ref remote); receiveMsg = Encoding.ASCII.GetString(bytes, 0, bytesLength); } } //实时接收消息 void Update() {
if (receiveMsg != "") {
Debug.Log(receiveMsg); receiveMsg = ""; } } //关闭socket,关闭thread private void OnDisable() {
if (socket != null) {
socket.Close(); } if (thread != null) {
thread.Interrupt(); thread.Abort(); } }}
上一篇:Android获取手机联系人、通讯录,重组a_z排序搜索;
下一篇:Unity 测试电脑和平板之间信号传输

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月02日 21时16分27秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章