DESKTOP-B25GA9E\W35
2 years ago
5 changed files with 191 additions and 241 deletions
@ -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 @@ |
|||||||
fileFormatVersion: 2 |
|
||||||
guid: 4b85b7b0fa7d90c47931dfa186fbe3e4 |
|
||||||
MonoImporter: |
|
||||||
externalObjects: {} |
|
||||||
serializedVersion: 2 |
|
||||||
defaultReferences: [] |
|
||||||
executionOrder: 0 |
|
||||||
icon: {instanceID: 0} |
|
||||||
userData: |
|
||||||
assetBundleName: |
|
||||||
assetBundleVariant: |
|
Loading…
Reference in new issue