//首先创建两个应用程序,一个用于发送消息,一个用于接收消息
//发送消息的程序
TcpClient tcp = new TcpClient(txtHost.Text, int.Parse(txtPort.Text));
NetworkStream ns = tcp.GetStream();
FileStream fs = File.Open("txtTest.txt", FileMode.Open);
int data = fs.ReadByte();
while (data != -1)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
tcp.Close();
//创建另一接收程序
public partial class Form1 : Form
{
//定义一个委托,用于更新Form1上控件。
protected delegate void UpdateDisplayDelegate(string text);
public Thread thread = null;
public TcpClient tcpClientReceiver = null;
TcpListener tcpListener = null;
public Boolean boolStop = false;
public Form1()
{
InitializeComponent();
thread = new Thread(new ThreadStart(Listen));
thread.Start();
}
public void Listen()
{
string LocalIp = "127.0.0.1";
if (LocalIp == null)
{
return;
}
IPAddress localAddr = IPAddress.Parse(LocalIp);
Int32 port = 8080;
tcpListener = new TcpListener(localAddr, port);
tcpClientReceiver = new TcpClient();
tcpListener.Start();
while (true)
{
if (!tcpListener.Pending())
{
//为了避免每次都被tcpListener.AcceptTcpClient()阻塞线程,添加了此判断,
//当没有连接请求时,什么也不做,有了请求再执行到tcpListener.AcceptTcpClient()
}
else
{
tcpClientReceiver = tcpListener.AcceptTcpClient();
NetworkStream ns = tcpClientReceiver.GetStream();
StreamReader sr = new StreamReader(ns);
string result = sr.ReadToEnd();
Invoke(new UpdateDisplayDelegate(UpdateDisplay), new object[] { result });
}
if (boolStop)
{
break;
}
}
}
public void UpdateDisplay(string text)
{
string currentContents = txtDisplay.Text;
currentContents += text + "\r\n"; //必须用"\r\n"在窗口中才能体现出换行
txtDisplay.Text = currentContents;
}
}