纯代码,挺简单的,
//UDP 通信
private void button1_Click(object sender, EventArgs e)
{
//由于收发都在本机,所以只用一个IP地址
IPAddress addr = IPAddress.Parse("127.0.0.1");
var ptLocal = new IPEndPoint(addr, 9001); //本机节点,用于发送
var ptDst = new IPEndPoint(addr, 6040); //目标节点
var udp = new UdpClient(ptLocal); //在本地建立udp服务
Task.Factory.StartNew(() =>
{
// 前面的代码和发送代码一样
while (true)
{
var received = udp.Receive(ref ptDst);
string info = Encoding.UTF8.GetString(received);
info = $" {ptDst.Address}:{ptDst.Port}:{info}";
Console.WriteLine(info);
byte[] buf = Encoding.UTF8.GetBytes($"{ptDst.Address}:{ptDst.Port} hello");
udp.Send(buf, buf.Length, ptDst); //将内容发给ptDst
}
});
byte[] buffer = Encoding.UTF8.GetBytes("hello");
udp.Send(buffer, buffer.Length, ptDst); //将内容发给ptDst
}
//TCP客户端
private void button2_Click(object sender, EventArgs e)
{
// 引用的命名空间还是上面这些
TcpClient tcp = new TcpClient("127.0.0.1", 9020);
NetworkStream n = tcp.GetStream();
var w = new BinaryWriter(n);
byte[] buffer = Encoding.UTF8.GetBytes("hello");
w.Write(buffer, 0, buffer.Length);
w.Flush();
}
//TCP服务
private void TCPServer()
{
TcpListener serv = new TcpListener(IPAddress.Any, 9002);
serv.Start();
Task.Factory.StartNew(() => {
while (true)
{
var TcpClient = serv.AcceptTcpClient();
var NetStream = TcpClient.GetStream();
Task.Factory.StartNew(() => {
Byte[] bytes = new Byte[256];
int i;
while ((i = NetStream.Read(bytes, 0, bytes.Length)) != 0)
{
var msg = Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine($"Received: {msg}");
msg += "。hello!";
var data = Encoding.ASCII.GetBytes(msg);
NetStream.Write(data, 0, data.Length);
}
});
}
});
}
private void button3_Click(object sender, EventArgs e)
{
TCPServer();
}