using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
public partial class ClientForm : Form
{
private Socket _clientSocket;
private byte[] _buffer;
public ClientForm()
{
InitializeComponent();
}
private void ConnectToServerButton_Click(object sender, EventArgs e)
{
// Connect to the server
_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(IPAddressTextBox.Text), int.Parse(PortTextBox.Text));
_clientSocket.BeginConnect(endPoint, ConnectCallback, null);
}
private void ConnectCallback(IAsyncResult ar)
{
try
{
_clientSocket.EndConnect(ar);
ConnectToServerButton.Enabled = false;
SendMessageButton.Enabled = true;
_buffer = new byte[1024];
_clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceiveCallback, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void ReceiveCallback(IAsyncResult ar)
{
try
{
int received = _clientSocket.EndReceive(ar);
if (received == 0)
{
throw new Exception("Connection closed");
}
string message = Encoding.UTF8.GetString(_buffer, 0, received);
ChatTextBox.AppendText(message + Environment.NewLine);
_buffer = new byte[1024];
_clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceiveCallback, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void SendMessageButton_Click(object sender, EventArgs e)
{
try
{
byte[] data = Encoding.UTF8.GetBytes(MessageTextBox.Text);
_clientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, SendCallback, null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void SendCallback(IAsyncResult ar)
{
try
{
_clientSocket.EndSend(ar);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}