DESKTOP-B25GA9E\W35
2 years ago
7 changed files with 218 additions and 244 deletions
@ -1,184 +0,0 @@
@@ -1,184 +0,0 @@
|
||||
using QFrameworkCP; |
||||
using UnityEngine; |
||||
using System; |
||||
using System.Text; |
||||
using System.Net.Sockets; |
||||
using System.IO; |
||||
using System.Threading.Tasks; |
||||
using System.Threading; |
||||
using System.Net.NetworkInformation; |
||||
|
||||
namespace JXSoft |
||||
{ |
||||
public class TCPUtility : IUtility |
||||
{ |
||||
public string tcpAddress; |
||||
public int tcpPort; |
||||
public TcpClient tcpClient; |
||||
public NetworkStream sendStream; |
||||
public bool isOpenTCP = false; |
||||
public bool isReceivedValue = false; |
||||
public string receivedData = ""; |
||||
public string exceptionData = ""; |
||||
|
||||
public Thread reciveT; |
||||
public bool isTimeOut = false; |
||||
|
||||
public TCPUtility() { |
||||
Debug.LogWarning("使用无参数构造tcp时,需要手动开启tcp服务"); |
||||
|
||||
} |
||||
public TCPUtility(string tcpAddress, int tcpPort) |
||||
{ |
||||
this.tcpAddress = tcpAddress; |
||||
this.tcpPort = tcpPort; |
||||
this.isTimeOut = false; |
||||
StartTCPClient(); |
||||
} |
||||
public bool StartTCPClient() |
||||
{ |
||||
isTimeOut = false; |
||||
if (!isOpenTCP) |
||||
{ |
||||
try { |
||||
tcpClient = new TcpClient(tcpAddress, tcpPort); |
||||
sendStream = tcpClient.GetStream(); |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
exceptionData = e.ToString(); |
||||
return false; |
||||
} |
||||
isOpenTCP = true; |
||||
reciveT = new Thread(RecciveMsg); |
||||
reciveT.IsBackground = true; |
||||
reciveT.Start(); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
public bool StartTCPClient(string ip, int port) { |
||||
isTimeOut = false; |
||||
if (!isOpenTCP) { |
||||
tcpAddress = ip; |
||||
tcpPort = port; |
||||
try |
||||
{ |
||||
tcpClient = new TcpClient(tcpAddress, tcpPort); |
||||
sendStream = tcpClient.GetStream(); |
||||
} |
||||
catch (Exception e) |
||||
{ |
||||
exceptionData = e.ToString(); |
||||
return false; |
||||
} |
||||
isOpenTCP = true; |
||||
reciveT = new Thread(RecciveMsg); |
||||
reciveT.IsBackground = true; |
||||
reciveT.Start(); |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
|
||||
public void CloseTCPClient() { |
||||
if (tcpClient.Connected) { |
||||
sendStream.Close(); |
||||
tcpClient.Close(); |
||||
isOpenTCP = false; |
||||
reciveT.Abort(); |
||||
} |
||||
} |
||||
|
||||
public void sendData(string data) |
||||
{ |
||||
if (isOpenTCP == false) |
||||
return; |
||||
byte[] sendBytes = Encoding.Default.GetBytes(data); |
||||
sendStream.Write(sendBytes, 0, sendBytes.Length); |
||||
} |
||||
|
||||
public void RecciveMsg() |
||||
{ |
||||
byte[] receiveBuff = new byte[1024]; |
||||
int reviceLength = 0; |
||||
string msg = ""; |
||||
while (isOpenTCP) |
||||
{ |
||||
try |
||||
{ |
||||
reviceLength = tcpClient.Client.Receive(receiveBuff); |
||||
msg = Encoding.UTF8.GetString(receiveBuff, 0, reviceLength); |
||||
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 tcpClient.Connected; |
||||
} |
||||
|
||||
/// <summary> |
||||
/// 获取本机IP |
||||
/// </summary> |
||||
/// <returns>string :ip地址</returns> |
||||
public string GetIP() |
||||
{ |
||||
string output = ""; |
||||
|
||||
foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces()) |
||||
{ |
||||
NetworkInterfaceType _type1 = NetworkInterfaceType.Wireless80211; //无线局域网适配器 |
||||
|
||||
if ((item.NetworkInterfaceType == _type1) && item.OperationalStatus == OperationalStatus.Up) |
||||
{ |
||||
foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses) |
||||
{ |
||||
if (ip.Address.AddressFamily == AddressFamily.InterNetwork) |
||||
{ |
||||
output = ip.Address.ToString(); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
return output; |
||||
} |
||||
} |
||||
|
||||
|
||||
} |
@ -1,11 +0,0 @@
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2 |
||||
guid: 58c08e7452ec0014ab1aedcf80bddd95 |
||||
MonoImporter: |
||||
externalObjects: {} |
||||
serializedVersion: 2 |
||||
defaultReferences: [] |
||||
executionOrder: 0 |
||||
icon: {instanceID: 0} |
||||
userData: |
||||
assetBundleName: |
||||
assetBundleVariant: |
Loading…
Reference in new issue