Server
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.Net.Sockets;
namespace TCP_server_client_test
{
public partial class Form1 : Form
{
private Thread serverThread;
private TcpListener serverListener;
public Form1()
{
InitializeComponent();
serverThread = new Thread(new ThreadStart(startListen));
serverThread.Start();
}
public void startListen()
{
try
{
serverListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 1234);
serverListener.Start();
do
{
TcpClient client = serverListener.AcceptTcpClient();
Thread clientThread = new Thread(new ParameterizedThreadStart(ClientThread));
clientThread.Start(client);
}
while (true);
}
catch
{
serverListener.Stop();
}
}
private void ClientThread(object client)
{
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
byte[] message = new byte[4096];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
bytesRead = clientStream.Read(message, 0, 4096);
}
catch
{
break;
}
if (bytesRead == 0)
{
break;
}
UTF8Encoding encoder = new UTF8Encoding();
AddLog(encoder.GetString(message, 0, bytesRead));
}
tcpClient.Close();
}
public void AddLog(string msg)
{
MethodInvoker method = delegate
{
listBox1.Items.Add(msg);
};
if (InvokeRequired)
BeginInvoke(method);
else
method.Invoke();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
serverListener.Stop();
}
}
}
Client
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
namespace Client
{
public partial class Form1 : Form
{
TcpClient client;
public Form1()
{
InitializeComponent();
connect();
}
private void connect()
{
client = new TcpClient();
IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
client.Connect(serverEndPoint);
send("Client connected...");
}
private void send(String msg)
{
NetworkStream clientStream = client.GetStream();
UTF8Encoding encoder = new UTF8Encoding();
byte[] buffer = encoder.GetBytes(msg);
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
private void button1_Click(object sender, EventArgs e)
{
send(textBox1.Text);
}
}
}