Advertisement
stromback

lule

Nov 10th, 2022
766
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.44 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.IO;
  11. using System.Net;
  12. using System.Net.Sockets;
  13. using System.Threading;
  14. using System.Diagnostics;
  15.  
  16. namespace Guldkortet
  17. {
  18.     public partial class ServerForm : Form
  19.     {
  20.         // Skapar lyssnare och klient
  21.         TcpListener listener;
  22.         TcpClient client;
  23.         int port = 12345;
  24.  
  25.         // Skapar listor för programmet, användare och kort
  26.         public static List<User> loadedUsers;
  27.         public static List<Card> loadedCards;
  28.  
  29.         public ServerForm()
  30.         {
  31.             InitializeComponent();
  32.         }
  33.         private void btnStart_Click(object sender, EventArgs e)
  34.         {
  35.             try
  36.             {
  37.                 listener = new TcpListener(IPAddress.Any, port);
  38.                 listener.Start();
  39.             }
  40.             // Fångar Exception errors, visar en MessageBox med felmeddelande om det skulle uppstå
  41.             catch (Exception error) { MessageBox.Show(error.Message, Text); return; }
  42.  
  43.             btnStart.Enabled = false;
  44.             StartReceiving();
  45.         }
  46.  
  47.         public async void StartReceiving()
  48.         {
  49.             try
  50.             {
  51.                 client = await listener.AcceptTcpClientAsync();
  52.             }
  53.             catch (Exception error) { MessageBox.Show(error.Message, Text); return; }
  54.             StartReading(client);
  55.         }
  56.         // Skapar en metod som läser bytes från nätverksströmmen
  57.         public async void StartReading(TcpClient c)
  58.         {
  59.             byte[] buffer = new byte[1024];
  60.  
  61.             int n = 0;
  62.             try
  63.             {
  64.                 n = await c.GetStream().ReadAsync(buffer, 0, buffer.Length);
  65.             }
  66.             catch (Exception error) { MessageBox.Show(error.Message, Text); return; }
  67.  
  68.             // Läser våra bytes till en string, tar datan vi får och testar den mot våra listor med användare och kort
  69.             string s = (Encoding.Unicode.GetString(buffer, 0, n));
  70.             string[] input = s.Split('-');
  71.             string userData = input[0];
  72.             string cardData = input[1];
  73.  
  74.             // Kollar om datan vi fått av klienten finns i våra listor
  75.             var userOutput = loadedUsers.Find(x => x.Id == userData);
  76.             var cardOutput = loadedCards.Find(x => x.Number == cardData);
  77.  
  78.             // Om både användare och kort finns, skickar ett meddelande till klienten och kongratulerar dem
  79.             if (loadedUsers.Exists(x => x.Id == userData) && loadedCards.Exists(x => x.Number == cardData))
  80.             {
  81.                 StartSending("Grattis!\n" + userOutput.Name + " har vunnit: " + cardOutput.Type + "!\nKortnummer: " + cardOutput.Number);
  82.             }
  83.             // Annars visar vi en MessageBox med ett felmeddelande
  84.             else
  85.             {
  86.                 StartSending("Fel användare eller kortnummer, försök igen!");
  87.             }
  88.             StartReading(c);
  89.         }
  90.        
  91.         public async void StartSending(string message)
  92.         {
  93.             byte[] outPut = Encoding.Unicode.GetBytes(message);
  94.             try
  95.             {
  96.                 await client.GetStream().WriteAsync(outPut, 0, outPut.Length);
  97.             }
  98.             catch (Exception error) { MessageBox.Show(error.Message, Text); return; }
  99.         }
  100.         class FileLoader
  101.         {
  102.  
  103.             // Skapar listor för FileLoadern att använda
  104.             List<User> users = new List<User>();
  105.             List<Card> cards = new List<Card>();
  106.             public FileLoader()
  107.             {
  108.                 if (File.Exists("kundlista.txt"))
  109.                 {
  110.                     StreamReader reader = new StreamReader("kundlista.txt", Encoding.Default, true); // Skapar en ny StreamReader som läser igenom texter.txt
  111.                     for (string item = reader.ReadLine(); item != null; item = reader.ReadLine()) // Sparar raderna av texten till en sträng och kollar att det finns någonting kvar att läsa
  112.                     {
  113.                         string[] vektor = item.Split(new string[] { "###" }, StringSplitOptions.None); // Går igenom alla rader och plockar bort seperatorn
  114.  
  115.                         User newUser = new User(); // Skapar en ny Book, sätter klassens värden från raderna i vår sparade sträng
  116.                         users.Add(newUser);
  117.                         newUser.Id = vektor[0];
  118.                         newUser.Name = vektor[1];
  119.                         newUser.Location = vektor[2];
  120.                     }
  121.                     loadedUsers = users;
  122.                 }
  123.                 if (File.Exists("kortlista.txt"))
  124.                 {
  125.                     StreamReader reader = new StreamReader("kortlista.txt", Encoding.Default, true);
  126.                     for (string item = reader.ReadLine(); item != null; item = reader.ReadLine())
  127.                     {
  128.                         string[] vektor = item.Split(new string[] { "###" }, StringSplitOptions.None);
  129.  
  130.                         Card newCard = new Card();
  131.                         cards.Add(newCard);
  132.                         newCard.Number = vektor[0];
  133.                         newCard.Type = vektor[1];
  134.                     }
  135.                     loadedCards = cards;
  136.                 }
  137.                 else
  138.                 {
  139.                     MessageBox.Show("No file found.");
  140.                     Environment.Exit(1);
  141.                 }
  142.             }
  143.         }
  144.         public class User
  145.         {
  146.             public string Name { get; set; }
  147.             public string Id { get; set; }
  148.             public string Location { get; set; }
  149.  
  150.             public override string ToString()
  151.             {
  152.                 return "Namn: " + Name + " | Kundnummer: " + Id + " | Plats: " + Location + "\n";
  153.             }
  154.         }
  155.  
  156.         public class Card
  157.         {
  158.             public string Number { get; set; }
  159.             public string Type { get; set; }
  160.  
  161.             public override string ToString()
  162.             {
  163.                 return "Kortnummer: " + Number + " | Typ: " + Type + "\n";
  164.             }
  165.         }
  166.  
  167.         private void rTbx_TextChanged(object sender, EventArgs e)
  168.         {
  169.  
  170.         }
  171.  
  172.         private void ServerForm_Load(object sender, EventArgs e)
  173.         {
  174.             FileLoader loadUsers = new FileLoader();
  175.         }
  176.     }
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement