Server:
namespace MyTcpServer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Socket newsock;
Socket client;
Thread thread;
private void button1_Click(object sender, EventArgs e)
{
try
{
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 5555);
newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
newsock.Bind(ipep);
newsock.Listen(10);
thread = new Thread(start);
CheckForIllegalCrossThreadCalls = false;
thread.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void start(object obj)
{
try
{
client = newsock.Accept();
textBox1.Text = "連接成功";
IPEndPoint newclient = (IPEndPoint)client.RemoteEndPoint;
byte[] data = new byte[1024];
while (true)
{
client.Receive(data);
textBox1.Text = textBox1.Text + "\r\n" + newclient.ToString() + Encoding.Unicode.GetString(data);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
string message = textBox2.Text;
byte[] data = new byte[1024];
data = Encoding.Unicode.GetBytes(message);
if(client.Connected)
client.Send(data);
}
}
}
Client:
namespace MyTCPClient
{
public partial class Form1 : Form
{
Socket newsock;
Thread thread;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress remoteIP = IPAddress.Parse("127.0.0.1");
newsock.Connect(remoteIP, 5555);//阻塞
textBox1.Text += "連接成功";
thread = new Thread(start);
CheckForIllegalCrossThreadCalls = false;
thread.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void start()
{
try
{
byte[] data = new byte[1024];
while (true)
{
newsock.Receive(data);
string message2 = Encoding.Unicode.GetString(data);
textBox1.Text += "\r\n" + newsock.RemoteEndPoint.ToString() + message2;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
string message = textBox2.Text;
byte[] data = new byte[1024];
data = Encoding.Unicode.GetBytes(message);
newsock.Send(data);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}