Skip to content

Instantly share code, notes, and snippets.

@ltwlf
Created September 27, 2020 11:37
Show Gist options
  • Save ltwlf/979196c0bf289e1b0164c3052dbfcbf5 to your computer and use it in GitHub Desktop.
Save ltwlf/979196c0bf289e1b0164c3052dbfcbf5 to your computer and use it in GitHub Desktop.
TcpListener snippet for HTTP
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using UnityEngine;
using static System.Text.Encoding;
namespace DefaultNamespace
{
public class TcpServer : MonoBehaviour
{
private TcpListener _listener;
private Thread _listenerThread;
private void Awake()
{
_listener = null;
try
{
// Set the TcpListener on port 13000.
var ipEndpoint = new IPEndPoint(IPAddress.Any, 8002);
// TcpListener server = new TcpListener(port);
_listener = new TcpListener(ipEndpoint);
_listenerThread = new Thread(StartListener);
_listenerThread.Start();
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
}
private void StartListener()
{
_listener.Start();
while (true)
{
var client = _listener.AcceptTcpClient();
var buffer = new byte[10240];
var stream = client.GetStream();
var length = stream.Read(buffer, 0, buffer.Length);
var incomingMessage = UTF8.GetString(buffer, 0, length);
var result = "<h1>Hello, world!</h1>";
var response = "HTTP/1.0 200 OK" + Environment.NewLine +
"Content-Length: " + result.Length + Environment.NewLine
+ "Content-Type: " + "text/html" + Environment.NewLine
+ Environment.NewLine
+ result
+ Environment.NewLine + Environment.NewLine;
stream.Write(
UTF8.GetBytes(response.ToCharArray()), 0, response.Length);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment