I coded a server-client (kind of) chat, and I need your review as I'm sure it is a mess. I used lots of tutorials and tips form different websites and forums which were posted at different times (maybe now it's a lot easier to write what I want) and slapped them on Visual Studio. It's not like I wanted it to be a chat, but a way to communicate with a server as a client.
Server-Side
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace First_Server
{
class Program
{
private static void SocketThread(object obj)
{
var ClientSocket = (TcpClient)obj;
while (true)
{
try
{
NetworkStream NetworkStream = ClientSocket.GetStream();
byte[] BytesFromClient = new byte[10025];
NetworkStream.Read(BytesFromClient, 0, ClientSocket.ReceiveBufferSize);
string DataFromClient = Encoding.ASCII.GetString(BytesFromClient);
DataFromClient = DataFromClient.Substring(0, DataFromClient.IndexOf("#"));
Console.WriteLine(DataFromClient);
string ServerResponse = DataFromClient;
Byte[] SendBytes = Encoding.ASCII.GetBytes(ServerResponse);
NetworkStream.Write(SendBytes, 0, SendBytes.Length);
}
catch (Exception StreamException)
{
Console.WriteLine("Connection from a client closed.");
ClientSocket.Close();
}
}
}
static void Main(string[] args)
{
int Port = 42069;
IPAddress LocalIPAddress = IPAddress.Parse("192.168.1.10");
TcpListener ServerSocket = new TcpListener(LocalIPAddress, Port);
TcpClient ClientSocket;
ServerSocket.Start(); Console.WriteLine("Server started. Waiting for requests...");
while (true)
{
ClientSocket = ServerSocket.AcceptTcpClient(); Console.WriteLine("Connection from a client accepted.");
ThreadPool.QueueUserWorkItem(SocketThread, ClientSocket);
}
}
}
}
Client-Side
using System;
using System.Text;
using System.Threading;
using System.Net.Sockets;
using System.Windows.Forms;
namespace First_Client
{
public partial class Form1 : Form
{
TcpClient ClientSocket = new TcpClient();
public void msg(string Message)
{
textBox1.Text = textBox1.Text + Message + Environment.NewLine;
}
public void ServerListener(object obj)
{
loop:
var NetworkStream = (NetworkStream)obj;
byte[] FromTheServer = new byte[10025];
try
{
NetworkStream.Read(FromTheServer, 0, ClientSocket.ReceiveBufferSize);
}
catch (Exception StreamError)
{
goto loop;
}
string StringFromServer = Encoding.ASCII.GetString(FromTheServer);
textBox1.Text = textBox1.Text + StringFromServer + Environment.NewLine;
}
public Form1()
{
InitializeComponent();
ClientSocket.Connect("95.76.40.237", 42069); label1.Text = "Client status: connected to server";
ThreadPool.QueueUserWorkItem(ServerListener);
}
private void button1_Click(object sender, EventArgs e)
{
NetworkStream NetworkStream = ClientSocket.GetStream();
byte[] ToTheServer = Encoding.ASCII.GetBytes(textBox2.Text + "#");
NetworkStream.Write(ToTheServer, 0, ToTheServer.Length);
byte[] FromTheServer = new byte[10025];
NetworkStream.Read(FromTheServer, 0, ClientSocket.ReceiveBufferSize);
string StringFromServer = Encoding.ASCII.GetString(FromTheServer);
msg(StringFromServer);
textBox2.Text = "";
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
}
}