
1.服務斷代碼
public partial class Server : Form { private bool lk = true; public Server() { InitializeComponent(); TextBox.CheckForIllegalCrossThreadCalls = false; } private void button1_Click(object sender, EventArgs e) { IPAddress ip = IPAddress.Parse(textBox1.Text); TcpListener server = new TcpListener(ip, int.Parse(textBox2.Text)); server.Start(); TaskFactory tasks = new TaskFactory(); string ipaddress = string.Empty; TcpClient client = null; while (lk) { Console.WriteLine("等待連接。。。"); client = server.AcceptTcpClient(); tasks.StartNew(() => HandleClient(client, ipaddress)).Wait(); } } private void HandleClient(TcpClient tcpclient, string ipadd) { lock (tcpclient) { if (tcpclient == null) { return; } // Buffer for reading data Byte[] bytes = new Byte[1024]; String data = null; // Enter the listening loop. while (tcpclient.Connected) { data = null; NetworkStream stream = tcpclient.GetStream(); int i; if ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { data = System.Text.Encoding.UTF8.GetString(bytes, 0, i); byte[] msg = System.Text.Encoding.UTF8.GetBytes(data); //stream.Write(msg, 0, msg.Length); textBox3.AppendText(data); } tcpclient.Close(); } } } }
2.客戶端代碼
public partial class Form1 : Form { public Form1() { InitializeComponent(); } TcpClient client = null; private void button1_Click(object sender, EventArgs e) { client = new TcpClient(); try { //if (!client.Connected) // client.Close(); client.Connect(tbIP.Text, int.Parse(tbPort.Text)); // 與服務器連接 } catch (Exception ex) { Console.WriteLine(ex.Message); return; } textBox2.Text = "連接成功"; } private void textBox1_TextChanged(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { button1_Click(null, null); string msg = textBox1.Text; if (msg != "") { NetworkStream streamToServer = client.GetStream(); //創建一個客戶端的NetworkStream對象 byte[] buffer = Encoding.UTF8.GetBytes(msg); // 獲得緩存 streamToServer.Write(buffer, 0, buffer.Length); // 發往服務器 int numb = streamToServer.Read(buffer, 0, buffer.Length); //接收來自服務器傳回來的數據,保存到buffer數組(byte型)中去 string s = Encoding.UTF8.GetString(buffer, 0, buffer.Length); //將數組中的內容轉化成string字符串,並且輸出 textBox2.AppendText(s + "\r\n"); } } }
