本文介绍在C#中如何利用TcpClient与TcpListener进行简单的消息发送和接收。在使用时要注意,如果是本机发送与接收,发送消息时IP用127.0.0.1,如果是非本机接收,请在接收端打开相应的端口(本例中为13)。
using System.IO; using System.Net; using System.Net.Sockets; using System.Threading.Tasks; //接收方 public Form1(){ InitializeComponent(); Task.Factory.StartNew(() => { TcpListener listener = null; TcpClient client = null; string message = string.Empty; while (true) //循环接收消息,否则只能接收一次 { try { listener = new TcpListener(IPAddress.Any, 13); listener.Start(); client = listener.AcceptTcpClient(); using (StreamReader sr = new StreamReader(client.GetStream())) { message = sr.ReadToEnd(); } } catch { message = "error"; } finally { client.Close(); listener.Stop(); } MessageBox.Show(message); } }); } //发送方 public void SendMessage(string receiverHostIP, int port, string message) { TcpClient client = null; try { client = new TcpClient(); client.Connect(receiverHostIP, port); using (NetworkStream ns = client.GetStream()) { if (ns.CanWrite) { byte[] send = System.Text.Encoding.UTF8.GetBytes(message); //如果不使用UTF8编码,则无法处理中文 ns.Write(send, 0, send.Length); } else { //cannot send message MessageBox.Show("cannot send message"); ns.Dispose(); } } } catch { } finally { client.Close(); } } private void button1_Click(object sender, EventArgs e) { this.SendMessage("127.0.0.1", 13, "要发送的消息"); }