DESKTOP-B25GA9E\W35
2 years ago
5 changed files with 191 additions and 241 deletions
@ -1,142 +0,0 @@
@@ -1,142 +0,0 @@
|
||||
using UnityEngine; |
||||
using QFrameworkCP; |
||||
using System; |
||||
using System.Text; |
||||
using System.Net.Sockets; |
||||
using System.Threading; |
||||
using System.Net; |
||||
|
||||
|
||||
public class UDPUtility : IUtility |
||||
{ |
||||
public string udpAddress; |
||||
public int udpPort; |
||||
public UdpClient udpClient; |
||||
public NetworkStream sendStream; |
||||
public bool isOpenUDP = false; |
||||
public bool isReceivedValue = false; |
||||
public string receivedData = ""; |
||||
public string exceptionData = ""; |
||||
public Thread reciveT; |
||||
public bool isTimeOut = false; |
||||
private IPEndPoint RemoteIpEndPoint; |
||||
|
||||
public UDPUtility() |
||||
{ |
||||
Debug.LogWarning("使用无参数构造udp时,需要手动开启udp服务"); |
||||
|
||||
} |
||||
public UDPUtility(string UDPAddress, int UDPPort) |
||||
{ |
||||
this.udpAddress = UDPAddress; |
||||
this.udpPort = UDPPort; |
||||
StartUDPClient(UDPAddress, UDPPort); |
||||
} |
||||
|
||||
public bool StartUDPClient(string ip, int port) |
||||
{ |
||||
isTimeOut = false; |
||||
if (!isOpenUDP) |
||||
{ |
||||
udpAddress = ip; |
||||
udpPort = port; |
||||
try |
||||
{ |
||||
RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, udpPort); |
||||
udpClient = new UdpClient(RemoteIpEndPoint); |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
exceptionData = e.ToString(); |
||||
return false; |
||||
} |
||||
isOpenUDP = true; |
||||
reciveT = new Thread(RecciveMsg); |
||||
reciveT.IsBackground = true; |
||||
reciveT.Start(); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public void CloseUDPClient() |
||||
{ |
||||
udpClient.Dispose(); |
||||
isOpenUDP = false; |
||||
reciveT.Abort(); |
||||
} |
||||
|
||||
public void sendData(string data) |
||||
{ |
||||
if (isOpenUDP == false) |
||||
return; |
||||
Byte[] sendBytes = Encoding.Default.GetBytes(data); |
||||
udpClient.Send(sendBytes, sendBytes.Length); |
||||
} |
||||
public void sendData(string data,string ip,int port) |
||||
{ |
||||
if (isOpenUDP == false) |
||||
return; |
||||
Byte[] sendBytes = Encoding.Default.GetBytes(data); |
||||
udpClient.Send(sendBytes, sendBytes.Length,ip,port); |
||||
} |
||||
|
||||
public void RecciveMsg() |
||||
{ |
||||
string msg = ""; |
||||
//Debug.Log("StartReceiving!"); |
||||
while (isOpenUDP) |
||||
{ |
||||
try |
||||
{ |
||||
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); |
||||
msg = Encoding.UTF8.GetString(receiveBytes); |
||||
if (msg != "") |
||||
{ |
||||
receivedData = msg; |
||||
isReceivedValue = true; |
||||
} |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
Debug.LogWarning(e); |
||||
//断线发送异常 |
||||
isTimeOut = true; |
||||
exceptionData = e.ToString(); |
||||
break; |
||||
} |
||||
} |
||||
Debug.Log("------------end While-------------"); |
||||
} |
||||
|
||||
/// <summary> |
||||
/// 线程接收到消息后 |
||||
/// </summary> |
||||
/// <returns>接收到的消息</returns> |
||||
public string getReceivedValue() |
||||
{ |
||||
if (isReceivedValue) |
||||
{ |
||||
isReceivedValue = false; |
||||
return receivedData; |
||||
} |
||||
else |
||||
{ |
||||
return ""; |
||||
} |
||||
} |
||||
|
||||
public bool getTimeOutState() |
||||
{ |
||||
return isTimeOut; |
||||
} |
||||
|
||||
public bool IsReceivedMsg() |
||||
{ |
||||
return sendStream.Length != 0; |
||||
} |
||||
public bool IsConnected() |
||||
{ |
||||
return udpClient.Client.Connected; |
||||
} |
||||
} |
@ -1,11 +0,0 @@
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2 |
||||
guid: 4b85b7b0fa7d90c47931dfa186fbe3e4 |
||||
MonoImporter: |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
Loading…
Reference in new issue