Skip to content
Snippets Groups Projects
Commit ebbc4d12 authored by tonschnoer's avatar tonschnoer
Browse files

Projektdateien hinzufügen.

parent 76a49872
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TcpServerTest
{
class Program
{
static void Main(string[] args)
{
if (args.Length > 0)
{
if (args[0] == "server")
{
TCPServer.StartServer();
}
if (args[0] == "client")
{
TCPClient.connect(args[1]);
}
}
else
{
TCPServer.StartServer();
Console.ReadLine();
}
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die einer Assembly zugeordnet sind.
[assembly: AssemblyTitle("TcpServerTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("TcpServerTest")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Durch Festlegen von ComVisible auf FALSE werden die Typen in dieser Assembly
// für COM-Komponenten unsichtbar. Wenn Sie auf einen Typ in dieser Assembly von
// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
[assembly: Guid("4155c8df-efa9-4d9d-a42b-ff684fd5a316")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
//
// Hauptversion
// Nebenversion
// Buildnummer
// Revision
//
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace TcpServerTest
{
class TCPClient
{
public static void connect(string filename)
{
try
{
// Set the IP address and port number of the server to connect
string serverIP = "172.29.28.63";
int serverPort = 12345;
long offset = 0;
byte[] receivedData = new byte[32768];
byte[] nullbuffer = new byte[3];
nullbuffer[0] = 0x4b;
nullbuffer[1] = 0x4d;
nullbuffer[2] = 0x54;
Console.WriteLine("TCPclient started.");
// Create a TcpClient to connect to the server
using (TcpClient tcpClient = new TcpClient(serverIP, serverPort))
{
Console.WriteLine($"Connected to {serverIP}:{serverPort}");
var start = DateTime.Now;
// Get the network stream for reading and writing data
using (NetworkStream clientStream = tcpClient.GetStream())
{
// Example: Send data to the server
using (FileStream fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
var bits = new byte[32768];
int bytesRead;
// Loop to read the file in chunks
while ((bytesRead = fileStream.Read(bits, 0, 32768)) > 0)
{
// Process the chunk of data (you can modify this part)
clientStream.Write(bits, 0, bytesRead);
offset = offset + bytesRead;
}
}
Console.Write("Write END");
clientStream.Write(nullbuffer, 0, 3);
// wait for answer from Server
while (true)
{
Console.Write(".");
int bytesRead = clientStream.Read(receivedData, 0, 32768);
if (bytesRead != 0) break;
}
}
var end = DateTime.Now;
float speed = (float)((offset / (1024 * (end - start).TotalMilliseconds)) * 1000);
Console.WriteLine();
Console.WriteLine("done in " + ((end - start).TotalMilliseconds).ToString());
Console.WriteLine("Transferred with " + speed.ToString() + " kB/s");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
}
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class TCPServer
{
static byte[] receivedData = new byte[32768];
static byte[] nullbuffer = new byte[3];
public static void StartServer()
{
nullbuffer[0] = 0x45;
nullbuffer[1] = 0x4e;
nullbuffer[2] = 0x44;
TcpListener tcpListener = null;
try
{
// Set the IP address and port number on which the server will listen
IPAddress ipAddress = IPAddress.Parse("192.168.178.20");
int port = 12345;
// Create the TcpListener
tcpListener = new TcpListener(ipAddress, port);
// Start listening for client requests
tcpListener.Start();
Console.WriteLine($"Server is listening on {ipAddress}:{port}");
while (true)
{
// Accept a pending connection request from a client
TcpClient tcpClient = tcpListener.AcceptTcpClient();
// Create a separate thread to handle the client
Thread clientThread = new Thread(HandleClient);
clientThread.Start(tcpClient);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
finally
{
// Stop listening for new clients if an exception occurs
tcpListener?.Stop();
}
}
static void write_file(Stream clientStream, string filename)
{
int bytesRead;
long offset = 0;
var start = DateTime.Now;
var bits = new byte[32768];
using (FileStream fileStream = new FileStream(AppDomain.CurrentDomain.BaseDirectory + "\\" + filename, FileMode.Open, FileAccess.Read))
{
// Loop to read the file in chunks
bytesRead = 1;
while (bytesRead > 0)
{
bytesRead = fileStream.Read(bits, 0, 32768);
clientStream.Write(bits, 0, bytesRead);
offset = offset + bytesRead;
//Console.WriteLine($"{offset}-{bytesRead}");
}
}
Console.Write("Write END to client");
clientStream.Write(nullbuffer, 0, 3);
clientStream.Flush();
// wait for answer from Client
while (true)
{
Console.Write(":");
bytesRead = clientStream.Read(receivedData, 0, 32768);
if (bytesRead == 0) break;
}
var end = DateTime.Now;
float speed = (float)((offset / (1024 * (end - start).TotalMilliseconds)) * 1000);
Console.WriteLine();
Console.WriteLine("done in " + ((end - start).TotalMilliseconds).ToString() + "ms");
Console.WriteLine("Transferred with " + speed.ToString() + " kB/s");
}
// *****************************************************************************
// Client Thread
// *****************************************************************************
static void HandleClient(object obj)
{
TcpClient tcpClient = (TcpClient)obj;
NetworkStream clientStream = tcpClient.GetStream();
string command = "";
byte[] message = new byte[32768];
byte[] response = new byte[1];
response[0] = 0x41;
int bytesRead;
try
{
bytesRead = clientStream.Read(message, 0, 32768);
if (bytesRead>4)
{
command = Encoding.UTF8.GetString(message, 0, 5);
Console.WriteLine(Encoding.UTF8.GetString(message,0,bytesRead));
}
if (command=="GET |")
{
string filename = Encoding.UTF8.GetString(message, 5, bytesRead - 5);
Console.WriteLine($"writing {filename} to client");
write_file(clientStream, filename);
}
if (command=="UPDA|")
{
Console.WriteLine("Writing updated files in response to UPDA command.");
}
if (command=="CHKS|")
{
Console.WriteLine("Getting MD5 checksum of file...");
}
} catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally
{
tcpClient.Close();
}
Console.WriteLine("close stream");
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{4155C8DF-EFA9-4D9D-A42B-FF684FD5A316}</ProjectGuid>
<OutputType>Exe</OutputType>
<RootNamespace>TcpServerTest</RootNamespace>
<AssemblyName>TcpServerTest</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TCPClient.cs" />
<Compile Include="TCPServer.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.33801.447
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TcpServerTest", "TcpServerTest.csproj", "{4155C8DF-EFA9-4D9D-A42B-FF684FD5A316}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4155C8DF-EFA9-4D9D-A42B-FF684FD5A316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4155C8DF-EFA9-4D9D-A42B-FF684FD5A316}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4155C8DF-EFA9-4D9D-A42B-FF684FD5A316}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4155C8DF-EFA9-4D9D-A42B-FF684FD5A316}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {108FD5E9-E903-4498-B2DF-C49CFF05E101}
EndGlobalSection
EndGlobal
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment