- //SERVER
- using System;
- using System.Net;
- using System.Net.Sockets;
- using System.Security.Cryptography;
- using System.Text;
- namespace server
- {
- public class Program
- {
- #region Konstante
- const int STD_PORT = 1234; //standardni port na katerem bomo komunicirali
- const string STD_IP = "127.0.0.1";//local host
- const int STD_MSG_SIZE = 1024;//konstanta za velikost paketa (1KB)
- const int STD_HEAD_LEN = 1; //glava pa bo velika en bajt
- const string STD_CRYPTO_KEY = "mojKljuč";//zašifriramo
- static bool run = true;// to je za neskončno zanko, če bi jo zelel kasnje eprekiniti
- #endregion
- static string Receive(NetworkStream ns)
- {
- try
- {
- byte[] recv = new byte[STD_MSG_SIZE];
- int lenght = ns.Read(recv, 0, recv.Length);
- return Encoding.UTF8.GetString(recv, 0, lenght);
- }
- catch (Exception ex)
- {
- Console.WriteLine("Napaka pri prejemniku!\n" + ex.Message + "\n" + ex.StackTrace);
- return null;
- }
- }
- static void Send(NetworkStream ns, string message)
- {
- try
- {
- byte[] send = Encoding.UTF8.GetBytes(message.ToCharArray(), 0, message.Length);
- ns.Write(send, 0, send.Length);
- }
- catch (Exception ex)
- {
- Console.WriteLine("Napaka pri pošiljatelju!\n" + ex.Message + "\n" + ex.StackTrace);
- }
- }
- public static string Encrypt(string message)
- {
- return null;//samo začasno... tu se morem naret
- }
- static void Main(string[] args)
- {
- TcpListener listener = new TcpListener(IPAddress.Parse(STD_IP), STD_PORT);
- listener.Start();
- Console.WriteLine("Strežnik\n poslušam na naslovu " + STD_IP + ":" + STD_PORT.ToString());
- while (run)
- {
- TcpClient temp12 = listener.AcceptTcpClient();//tu sem odstrano using
- using (NetworkStream ns = temp12.GetStream())
- {
- Console.WriteLine("Odjemalec se je povezal (" + temp12.Client.RemoteEndPoint.ToString() + ")");
- string message = Receive(ns);
- Console.WriteLine("Dobil sem sporočilo: " + message);
- string response = "";
- //protokol se morem napisat
- string head = message[0].ToString();
- string body = "";
- if(message.Length > 1)
- {
- body = message.Substring(STD_HEAD_LEN, message.Length - 1);
- }
- switch (head)
- {
- case "A":
- response = "Pozdravljen " + temp12.Client.RemoteEndPoint.ToString();
- break;
- case "B":
- response ="Trenutni čas je: " + DateTime.Now.ToString("dd. MM. yyyy, H:mm");
- break;
- case "C":
- response = Environment.CurrentDirectory;
- break;
- case "D":
- response = body;
- //sporocilo ki ga je pravkar prejel
- break;
- case "E":
- response = Environment.MachineName + "\n" + Environment.OSVersion.ToString;
- break;
- case "F":
- response = Environment.MachineName + "\n" + Environment.OSVersion.ToString;
- break;
- }
- Send(ns, response);
- Console.WriteLine("Odgovoril sem: " + response);
- }
- Console.WriteLine("Odjemalec se je odklopil\n");
- }
- listener.Stop();
- Console.WriteLine("Strežnik se je ustavil");
- Console.ReadKey();
- }
- }
- }
- //Console.WriteLine("Hello, World!");