Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Net.Sockets;
- using System.Reflection;
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Xml.Serialization;
- namespace Client
- {
- public class Program
- {
- public static void Main(string[] args)
- {
- while (true)
- {
- try
- {
- Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- Console.WriteLine("Hello! Choose the ip-address to connect to a PC");
- string? ip = Console.ReadLine();
- server.Connect(ip, 8080);
- byte[] data = ToByteArray<bool>(true);
- server.Send(data);
- server.Receive(data);
- bool initialized = FromByteArray<bool>(data);
- if (initialized)
- {
- // Beide Initialisiert
- int receivedDataLength = server.Receive(data);
- string receivedData = System.Text.Encoding.ASCII.GetString(data, 0, receivedDataLength);
- Console.WriteLine("Received: {0}", receivedData);
- using (NetworkStream stream = new NetworkStream(server, false))
- {
- SendToStream<Person>(new Person("Klaus Meinert", 45), stream);
- }
- }
- }
- catch
- {
- throw;
- }
- }
- }
- [Serializable]
- public class Person
- {
- public string name { get; set; }
- public int age { get; set; }
- public Person(string name, int age)
- {
- this.name = name;
- this.age = age;
- }
- public Person() { }
- }
- public static byte[] ToByteArray<T>(T obj)
- {
- if (obj == null)
- return null;
- XmlSerializer bf = new XmlSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream())
- {
- bf.Serialize(ms, obj);
- return ms.ToArray();
- }
- }
- public static T FromByteArray<T>(byte[] data)
- {
- if (data == null)
- return default(T);
- XmlSerializer bf = new XmlSerializer(typeof(T));
- using (MemoryStream ms = new MemoryStream(data))
- {
- object obj = bf.Deserialize(ms);
- return (T)obj;
- }
- }
- public static T GetStreamFromServer<T>(Stream data)
- {
- if (data == null)
- return default(T);
- XmlSerializer bf = new XmlSerializer(typeof(T));
- object obj = bf.Deserialize(data);
- return (T)obj;
- }
- public static void SendToStream<T>(T obj, Stream data)
- {
- XmlSerializer bf = new XmlSerializer(typeof(T));
- bf.Serialize(data, obj);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement