Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
- namespace testServer
- {
- public partial class Form1 : Form
- {
- const int PORT = 5454;
- System.Threading.Thread ThreadForServer = null;
- List<User> users = new List<User>();
- public Form1()
- {
- InitializeComponent();
- ThreadForServer = new System.Threading.Thread(startServer);
- ThreadForServer.Start();
- }
- public void startServer(object i)
- {
- string hostName = Dns.GetHostName();
- IPHostEntry ipEntry = Dns.GetHostByName(hostName);
- IPAddress[] ipAdresses = ipEntry.AddressList;
- IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(ipAdresses[0].ToString()), PORT);
- Socket sListener = new Socket(IPAddress.Parse(ipAdresses[0].ToString()).AddressFamily, SocketType.Stream, ProtocolType.Tcp);
- try
- {
- sListener.Bind(ipEndPoint);
- sListener.Listen(10);
- while (true)
- {
- Socket handler = sListener.Accept();
- string data = null;
- byte[] bytes = new byte[1024];
- int bytesRec = handler.Receive(bytes);
- data += Encoding.UTF8.GetString(bytes, 0, bytesRec);
- clientQuery(data, handler);
- }
- }
- catch (Exception ex)
- {
- updateLog(ex.ToString());
- }
- }
- private void clientQuery(string query, Socket client)
- {
- string queryCode = query.Substring(1, 3);
- string userName = query.Substring(6, query.Length - 6);
- byte[] serverAnswer = null;
- switch (queryCode)
- {
- case "001":
- User user = new User(users.Count, userName, client);
- users.Add(user);
- updateLog("New client connected. ID: " + user.ID + ". Name: " + user.Name);
- serverAnswer = Encoding.UTF8.GetBytes("[001] Connect successfull.");
- client.Send(serverAnswer);
- Action action = () =>
- {
- activeUsersLabel.Text = "Active users: " + users.Count;
- };
- Invoke(action);
- break;
- }
- client.Shutdown(SocketShutdown.Both);
- client.Close();
- }
- private void updateLog(string logData)
- {
- Action action = () =>
- {
- logTB.AppendText(logData + Environment.NewLine);
- };
- Invoke(action);
- }
- }
- class User
- {
- public int ID { get; set; }
- public string Name { get; set; }
- public Socket Socket { get; set; }
- public User(int id, string name, Socket socket)
- {
- ID = id;
- Name = name;
- Socket = socket;
- }
- }
- }
Add Comment
Please, Sign In to add comment