-
-
Save pask23/b2e1b0e68307b3c1a47e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Net.Sockets; | |
using System.Text; | |
using System.Threading.Tasks; | |
namespace ConsoleApplication2 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
StartListener(); | |
ConnectAsTcpClient(); | |
Console.ReadLine(); | |
} | |
private static async void ConnectAsTcpClient() | |
{ | |
using (var tcpClient = new TcpClient()) | |
{ | |
Console.WriteLine("[Client] Connecting to server"); | |
await tcpClient.ConnectAsync("127.0.0.1", 1234); | |
Console.WriteLine("[Client] Connected to server"); | |
using (var networkStream = tcpClient.GetStream()) | |
{ | |
Console.WriteLine("[Client] Writing request {0}", ClientRequestString); | |
await networkStream.WriteAsync(ClientRequestBytes, 0, ClientRequestBytes.Length); | |
var buffer = new byte[4096]; | |
var byteCount = await networkStream.ReadAsync(buffer, 0, buffer.Length); | |
var response = Encoding.UTF8.GetString(buffer, 0, byteCount); | |
Console.WriteLine("[Client] Server response was {0}", response); | |
} | |
} | |
} | |
private static readonly string ClientRequestString = "Some HTTP request here"; | |
private static readonly byte[] ClientRequestBytes = Encoding.UTF8.GetBytes(ClientRequestString); | |
private static readonly string ServerResponseString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><document><userkey>key</userkey> <machinemode>1</machinemode><serial>0000</serial><unitname>Device</unitname><version>1</version></document>\n"; | |
private static readonly byte[] ServerResponseBytes = Encoding.UTF8.GetBytes(ServerResponseString); | |
private static async void StartListener() | |
{ | |
var tcpListener = TcpListener.Create(1234); | |
tcpListener.Start(); | |
var tcpClient = await tcpListener.AcceptTcpClientAsync(); | |
Console.WriteLine("[Server] Client has connected"); | |
using (var networkStream = tcpClient.GetStream()) | |
{ | |
var buffer = new byte[4096]; | |
Console.WriteLine("[Server] Reading from client"); | |
var byteCount = await networkStream.ReadAsync(buffer, 0, buffer.Length); | |
var request = Encoding.UTF8.GetString(buffer, 0, byteCount); | |
Console.WriteLine("[Server] Client wrote {0}", request); | |
await networkStream.WriteAsync(ServerResponseBytes, 0, ServerResponseBytes.Length); | |
Console.WriteLine("[Server] Response has been written"); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment