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