本文共 11668 字,大约阅读时间需要 38 分钟。
用C#编写一个命令行/控制台hello world程序
using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;namespace Client{ class Program { static void Main(string[] args) { //提示信息 Console.WriteLine("按下任意按键开始发送..."); Console.ReadKey(); int m; //做好链接准备 UdpClient client = new UdpClient(); //实例一个端口 IPAddress remoteIP = IPAddress.Parse("10.60.189.252"); //这个IP是我室友的电脑 int remotePort = 11000; //设置端口号 IPEndPoint remotePoint = new IPEndPoint(remoteIP, remotePort); //实例化一个远程端点 for (int i = 0; i < 50; i++) { //要发送的数据:第n行:hello cqjtu!重交物联2018级 string sendString = null; sendString += "第"; m = i + 1; sendString += m.ToString(); sendString += "行:hello cqjtu!重交物联2018级"; //定义发送的字节数组 //将字符串转化为字节并存储到字节数组中 byte[] sendData = null; sendData = Encoding.Default.GetBytes(sendString); client.Send(sendData, sendData.Length, remotePoint);//将数据发送到远程端点 } client.Close();//关闭连接 //提示信息 Console.WriteLine(""); Console.WriteLine("数据发送成功,按任意键退出..."); System.Console.ReadKey(); } }}
服务器代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Net.Sockets;using System.Net;namespace server{ class Program { static void Main(string[] args) { UdpClient udpRec = new UdpClient(8888); Console.WriteLine("服务器已开启!"); try { while (true) { IPEndPoint remoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0); byte[] recBytes = udpRec.Receive(ref remoteIpEndPoint); string returnData = Encoding.Default.GetString(recBytes); Console.WriteLine("接收到的数据是:" + returnData); } } catch (Exception e) { Console.WriteLine(e); } finally { udpRec.Close(); } } }}
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.Threading;namespace frame_udp_server{ public partial class Form1 : Form { private UdpClient receiveUdpClient;//接收用 private UdpClient sendUdpClient;//发送用 private const int port = 65530;//和本机绑定的端口号 IPAddress ip=IPAddress.Parse("192.168.43.167");//本机ip IPAddress remoteip=IPAddress.Parse("192.168.43.208");//远程主机ip public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; //获取本机可用IP地址 IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); foreach (IPAddress ipa in ips) { if (ipa.AddressFamily == AddressFamily.InterNetwork) { ip = ipa; break; } } //为了在同一台机器调试,此IP也作为默认远程IP //remoteip = ip; } private void Form1_Load(object sender, EventArgs e) { //创建一个线程接收远程主机发来的信息 Thread myThread = new Thread(ReceiveData); myThread.IsBackground = true; myThread.Start(); } //接收数据 private void ReceiveData() { IPEndPoint local = new IPEndPoint(ip, port); receiveUdpClient = new UdpClient(local); IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0); while (true) { try { //关闭udpClient 时此句会产生异常 byte[] receiveBytes = receiveUdpClient.Receive(ref remote); string receiveMessage = Encoding.Unicode.GetString( receiveBytes, 0, receiveBytes.Length); listBox1.Items.Add("收到的消息:" + receiveMessage); } catch { break; } } } //点击发送按钮发送数据 private void button1_Click(object sender, EventArgs e) { //remoteip = IPAddress.Parse(txt_IPAddress.Text); Thread myThread = new Thread(SendMessage); myThread.IsBackground = true; myThread.Start(textBox2.Text); } //发送消息 private void SendMessage(object obj) { string message = (string)obj; sendUdpClient = new UdpClient(0); byte[] bytes = Encoding.Unicode.GetBytes(message); IPEndPoint iep = new IPEndPoint(remoteip, port); try { sendUdpClient.Send(bytes, bytes.Length, iep); listBox1.Items.Add("发送的消息:" + message); textBox2.Clear(); } catch (Exception ex) { listBox1.Items.Add("发送出错:" + ex.Message); } } delegate void AddItemDelegate(ListBox listbox, string text); private void AddItem(ListBox listbox, string text) { if (listbox.InvokeRequired) { AddItemDelegate d = AddItem; //Control.Invoke 方法 (Delegate, Object[]): //在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托。 listbox.Invoke(d, new object[] { listbox, text }); } else { //Add:动态的添加列表框中的项 listbox.Items.Add(text); //SelectedIndex属性获取单项选择ListBox中当前选定项的位置 //Count:列表框中条目的总数 listbox.SelectedIndex = listbox.Items.Count - 1; //调用此方法等效于将 SelectedIndex 属性设置为-1。 //可以使用此方法快速取消选择列表中的所有项。 listbox.ClearSelected(); } } delegate void ClearTextBoxDelegate(); private void ClearTextBox() { if (textBox2.InvokeRequired) { ClearTextBoxDelegate d = ClearTextBox; textBox2.Invoke(d); } else { textBox2.Clear(); textBox2.Focus(); } } private void label2_Click(object sender, EventArgs e) { } private void label2_Click_1(object sender, EventArgs e) { } }}```- 结果using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Net;using System.Net.Sockets;using System.Threading;namespace frame_udp_server{ public partial class Form1 : Form { private UdpClient receiveUdpClient;//接收用 private UdpClient sendUdpClient;//发送用 private const int port = 65530;//和本机绑定的端口号 IPAddress ip=IPAddress.Parse("192.168.43.167");//本机ip IPAddress remoteip=IPAddress.Parse("192.168.43.208");//远程主机ip public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; //获取本机可用IP地址 IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName()); foreach (IPAddress ipa in ips) { if (ipa.AddressFamily == AddressFamily.InterNetwork) { ip = ipa; break; } } //为了在同一台机器调试,此IP也作为默认远程IP //remoteip = ip; } private void Form1_Load(object sender, EventArgs e) { //创建一个线程接收远程主机发来的信息 Thread myThread = new Thread(ReceiveData); myThread.IsBackground = true; myThread.Start(); } //接收数据 private void ReceiveData() { IPEndPoint local = new IPEndPoint(ip, port); receiveUdpClient = new UdpClient(local); IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0); while (true) { try { //关闭udpClient 时此句会产生异常 byte[] receiveBytes = receiveUdpClient.Receive(ref remote); string receiveMessage = Encoding.Unicode.GetString( receiveBytes, 0, receiveBytes.Length); listBox1.Items.Add("收到的消息:" + receiveMessage); } catch { break; } } } //点击发送按钮发送数据 private void button1_Click(object sender, EventArgs e) { //remoteip = IPAddress.Parse(txt_IPAddress.Text); Thread myThread = new Thread(SendMessage); myThread.IsBackground = true; myThread.Start(textBox2.Text); } //发送消息 private void SendMessage(object obj) { string message = (string)obj; sendUdpClient = new UdpClient(0); byte[] bytes = Encoding.Unicode.GetBytes(message); IPEndPoint iep = new IPEndPoint(remoteip, port); try { sendUdpClient.Send(bytes, bytes.Length, iep); listBox1.Items.Add("发送的消息:" + message); textBox2.Clear(); } catch (Exception ex) { listBox1.Items.Add("发送出错:" + ex.Message); } } delegate void AddItemDelegate(ListBox listbox, string text); private void AddItem(ListBox listbox, string text) { if (listbox.InvokeRequired) { AddItemDelegate d = AddItem; //Control.Invoke 方法 (Delegate, Object[]): //在拥有控件的基础窗口句柄的线程上,用指定的参数列表执行指定委托。 listbox.Invoke(d, new object[] { listbox, text }); } else { //Add:动态的添加列表框中的项 listbox.Items.Add(text); //SelectedIndex属性获取单项选择ListBox中当前选定项的位置 //Count:列表框中条目的总数 listbox.SelectedIndex = listbox.Items.Count - 1; //调用此方法等效于将 SelectedIndex 属性设置为-1。 //可以使用此方法快速取消选择列表中的所有项。 listbox.ClearSelected(); } } delegate void ClearTextBoxDelegate(); private void ClearTextBox() { if (textBox2.InvokeRequired) { ClearTextBoxDelegate d = ClearTextBox; textBox2.Invoke(d); } else { textBox2.Clear(); textBox2.Focus(); } } private void label2_Click(object sender, EventArgs e) { } private void label2_Click_1(object sender, EventArgs e) { } }}
太好了,真不错,下次还来
转载地址:http://bivqf.baihongyu.com/