上一篇实现了服务器端的sockets编程,下面是客户端的程序,运行效果如下:
开启服务器之后,填上服务器地址与端口,点击即可连接,笔者在两台工控机之间测试正常通信。
服务器端代码:C#Socket套接字使用Tcp协议通信(服务器端)
下面是客户端的源代码,比起服务器端来说,客户端的代码简洁不少。
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 client { public partial class Form1 : Form { public delegate void upadta (String arg); Socket mysocket; public Form1 () { InitializeComponent (); } private void Form1_Load ( object sender, EventArgs e ) { } private void button1_Click ( object sender, EventArgs e ) { mysocket = new Socket ( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp ); IPAddress ips = IPAddress.Parse ( textBox1.Text ); IPEndPoint ipend = new IPEndPoint ( ips, Convert.ToInt16 ( textBox2.Text ) ); mysocket.Connect ( ipend ); Thread thread = new Thread ( resmessg ); thread.IsBackground = true; thread.Start (); } public void resmessg (object obj) { upadta day = new upadta (updataui); while(true){ byte[] mess = new byte[1024 * 1024]; int length = mysocket.Receive (mess); String dtr = Encoding.UTF8.GetString (mess,0,length); Invoke (day,dtr); } } private void button2_Click ( object sender, EventArgs e ) { byte[] senstr = Encoding.UTF8.GetBytes (textBox3.Text.ToString()); mysocket.Send (senstr); textBox4.Text += textBox3.Text; textBox3.Text = ""; } public void updataui (String arg) { textBox4.Text += arg; } } }
客户端同样用到了委托,此代码仅供参考。笔者在vs2012net4.5环境中编译通过。下面附上项目代码
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/241257.html