Inicia o pograma com server e client de socket TPC.
commit
2b664bf803
@ -0,0 +1 @@
|
||||
obj/*
|
@ -0,0 +1,41 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "build",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"build",
|
||||
"${workspaceFolder}/backDot.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "publish",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"publish",
|
||||
"${workspaceFolder}/backDot.csproj",
|
||||
"/property:GenerateFullPaths=true",
|
||||
"/consoleloggerparameters:NoSummary"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
},
|
||||
{
|
||||
"label": "watch",
|
||||
"command": "dotnet",
|
||||
"type": "process",
|
||||
"args": [
|
||||
"watch",
|
||||
"run",
|
||||
"--project",
|
||||
"${workspaceFolder}/backDot.csproj"
|
||||
],
|
||||
"problemMatcher": "$msCompile"
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
|
||||
namespace backDot.Commom{
|
||||
public class Constants{
|
||||
public static int Port = 3666;
|
||||
public static string EndOfMessage = "<|EOM|>";
|
||||
|
||||
public static string GetServerHost(){
|
||||
string? _clientHost = Environment.GetEnvironmentVariable("backdothost");
|
||||
|
||||
if (_clientHost == null || _clientHost == ""){
|
||||
_clientHost = "127.0.0.0";
|
||||
}
|
||||
|
||||
Console.WriteLine(_clientHost);
|
||||
|
||||
return _clientHost;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using backDot.Commom;
|
||||
|
||||
|
||||
namespace backDot.TheDot{
|
||||
public class AppClient{
|
||||
private int port = Constants.Port;
|
||||
private IPHostEntry? ipHost;
|
||||
private IPAddress? ipAddress;
|
||||
private IPEndPoint? ipEndPoint;
|
||||
|
||||
public async Task RunClient(){
|
||||
this.ipHost = await Dns.GetHostEntryAsync(Constants.GetServerHost());
|
||||
this.ipAddress = this.ipHost.AddressList[0];
|
||||
this.ipEndPoint = new IPEndPoint(this.ipAddress, this.port);
|
||||
|
||||
using Socket client = new Socket(
|
||||
this.ipEndPoint.AddressFamily,
|
||||
SocketType.Stream,
|
||||
ProtocolType.Tcp
|
||||
);
|
||||
|
||||
await client.ConnectAsync(this.ipEndPoint);
|
||||
|
||||
while (true){
|
||||
var message = $"Test message{Constants.EndOfMessage}";
|
||||
var messageBytes = Encoding.UTF8.GetBytes(message);
|
||||
await client.SendAsync(messageBytes, SocketFlags.None);
|
||||
Console.WriteLine($"Send message: {message}");
|
||||
var buffer = new byte[1_024];
|
||||
var bytesReceived = await client.ReceiveAsync(buffer, SocketFlags.None);
|
||||
var received = Encoding.UTF8.GetString(buffer, 0, bytesReceived);
|
||||
|
||||
if (received == "<|ACK|>"){
|
||||
Console.WriteLine($"Reveived: {received}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
client.Shutdown(SocketShutdown.Both);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
using System.Text;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using backDot.Commom;
|
||||
|
||||
|
||||
namespace backDot.TheDot{
|
||||
public class AppServer{
|
||||
private int port = Constants.Port;
|
||||
private IPHostEntry? ipHost;
|
||||
private IPAddress? ipAddress;
|
||||
private IPEndPoint? ipEndPoint;
|
||||
|
||||
public async Task RunServer(){
|
||||
this.ipHost = await Dns.GetHostEntryAsync("127.0.0.1");
|
||||
this.ipAddress = this.ipHost.AddressList[0];
|
||||
this.ipEndPoint = new IPEndPoint(this.ipAddress, port);
|
||||
|
||||
using Socket listener = new Socket(
|
||||
this.ipEndPoint.AddressFamily,
|
||||
SocketType.Stream,
|
||||
ProtocolType.Tcp
|
||||
);
|
||||
|
||||
listener.Bind(this.ipEndPoint);
|
||||
Console.WriteLine(@$"
|
||||
Server up.
|
||||
Listen on {this.ipAddress}:{this.port}
|
||||
");
|
||||
listener.Listen(100);
|
||||
var handler = await listener.AcceptAsync();
|
||||
|
||||
while (true){
|
||||
var buffer = new byte[1_024];
|
||||
var byteContent = await handler.ReceiveAsync(buffer, SocketFlags.None);
|
||||
var content = Encoding.UTF8.GetString(buffer, 0, byteContent);
|
||||
|
||||
if (content.IndexOf(Constants.EndOfMessage) > -1){
|
||||
Console.WriteLine(@$"
|
||||
Receive Message: {content.Replace(Constants.EndOfMessage, "")}
|
||||
");
|
||||
|
||||
var messageToClient = "<|ACK|>";
|
||||
var byteMessage = Encoding.UTF8.GetBytes(messageToClient);
|
||||
|
||||
await handler.SendAsync(byteMessage, 0);
|
||||
|
||||
Console.WriteLine($"Send: {messageToClient}");
|
||||
// TODO: Remover isso e trocar a lógica para enviar comandos para o cliente.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v6.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v6.0": {
|
||||
"backDot/1.0.0": {
|
||||
"runtime": {
|
||||
"backDot.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"backDot/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,9 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net6.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "6.0.0"
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue