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
2 years ago
|
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 "";
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|