需求:上位机必须技能,因为工控领域有很多需要和机器人或者其他第三方设备通讯的需求!
1.新建一个Winform窗体
2.编辑窗体布局
3.进入IDE进行编码,先导入需要的库文件
(1)线程
(2)通讯
using System.Net;
using System.Net.Sockets;
using System.Threading;
4.注册按钮ConBtn事件
private void ConBtn_Click(object sender, EventArgs e)
{
try
{
socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //新建一个网络通讯类
IPAddress ip = IPAddress.Parse(IP.Text); //获取服务器的IP
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(PO.Text)); //获取端口号
socketSend.Connect(point); //连接
ShowMsg("机器人连接成功!");
pictureBox1.BackColor = Color.Green; //改变PictureBox的颜色
//新建一个接收线程
Thread ClientRecive = new Thread(Recive);
ClientRecive.Start();
}
5.注册发送按钮事件
private void Post_Click(object sender, EventArgs e)
{
try
{
string msg = text.Text; //获取用户输入的信息
byte[] buffer1 = new byte[1024 * 1024 * 3];
buffer1 = Encoding.UTF8.GetBytes(msg);
socketSend.Send(buffer1);
listBox1.Items.Insert(0,"发送信息"+msg.ToString());
}
catch(Exception)
{
MessageBox.Show("异常");
}
}
6.新建一个线程,用来监听服务端给我的信息
public void Recive()
{
try
{
byte[] buffer = new byte[1024 * 1024 * 3];
while (true)
{
int len = socketSend.Receive(buffer);
string str = Encoding.UTF8.GetString(buffer, 0, len);
// 委托
// 为了解决线程内容 - 线程内部无法访问控件的问题
this.Invoke(new Action( () =>
{
listBox2.Items.Insert(0, "发送信息" + str.ToString());
}));
Console.WriteLine(str);
}
}
catch (Exception e)
{
throw e;
}
}
7.打开服务器开始,监听即可,大功告成!
成品动图: