You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.7 KiB
135 lines
3.7 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
using System; |
|
using System.Net; |
|
using System.Threading; |
|
using QFrameworkCP; |
|
using System.Text; |
|
|
|
namespace JXSoft { |
|
public class HttpServerModel : DataEventModel |
|
{ |
|
|
|
protected override void OnInit() |
|
{ |
|
|
|
} |
|
|
|
public override void setLinkState(int linkState) |
|
{ |
|
|
|
} |
|
|
|
public override int getLinkState() |
|
{ |
|
return 0; |
|
} |
|
} |
|
|
|
public class HttpServerUtility:IUtility |
|
{ |
|
//example:http://127.0.0.1:8080/index |
|
public string address; |
|
public HttpListener httpServer; |
|
|
|
public bool isReceivedValue = false; |
|
public string receivedData = ""; |
|
public string exceptionData = ""; |
|
|
|
public Thread reciveT; |
|
|
|
public bool startServer(string[] prefixes) { |
|
if (!httpServer.IsListening) { |
|
if (!HttpListener.IsSupported) |
|
{ |
|
Debug.Log("Windows XP SP2 or Server 2003 is required to use the HttpListener class."); |
|
return false; |
|
} |
|
// URI prefixes are required, |
|
// for example "http://127.0.0.1:8080/index/". |
|
if (prefixes == null || prefixes.Length == 0) { |
|
throw new ArgumentException("prefixes"); |
|
} |
|
|
|
// Create a listener. |
|
httpServer = new HttpListener(); |
|
// Add the prefixes. |
|
foreach (string s in prefixes) |
|
{ |
|
httpServer.Prefixes.Add(s); |
|
} |
|
httpServer.Start(); |
|
Debug.Log("Listening..."); |
|
return true; |
|
} |
|
return false; |
|
} |
|
|
|
public void startServer(string prefix) { |
|
string[] prefixes = {prefix}; |
|
startServer(prefixes); |
|
} |
|
|
|
public void startServer() |
|
{ |
|
string[] prefixes = { address }; |
|
startServer(prefixes); |
|
} |
|
|
|
public void closeServer() { |
|
if (httpServer.IsListening) { |
|
httpServer.Stop(); |
|
} |
|
} |
|
|
|
public void RecciveMsg() |
|
{ |
|
byte[] receiveBuff = new byte[1024]; |
|
int reviceLength = 0; |
|
string msg = ""; |
|
while (httpServer.IsListening) |
|
{ |
|
try |
|
{ |
|
HttpListenerContext context = httpServer.GetContext(); |
|
HttpListenerRequest request = context.Request; |
|
// Obtain a response object. |
|
//byte[] buffer = System.Text.Encoding.UTF8.GetBytes(request.Url); |
|
//reviceLength = tcpClient.Client.Receive(receiveBuff); |
|
msg = Encoding.UTF8.GetString(receiveBuff, 0, reviceLength); |
|
if (msg != "") |
|
{ |
|
receivedData = msg; |
|
isReceivedValue = true; |
|
} |
|
} |
|
catch (Exception e) |
|
{ |
|
Debug.LogWarning(e); |
|
//断线发送异常 |
|
exceptionData = e.ToString(); |
|
break; |
|
} |
|
} |
|
Debug.Log("------------end While-------------"); |
|
} |
|
|
|
/// <summary> |
|
/// 线程接收到消息后 |
|
/// </summary> |
|
/// <returns>接收到的消息</returns> |
|
public string getReceivedValue() |
|
{ |
|
if (isReceivedValue) |
|
{ |
|
isReceivedValue = false; |
|
return receivedData; |
|
} |
|
else |
|
{ |
|
return ""; |
|
} |
|
} |
|
} |
|
} |