因为疫情期间,在家闲的无聊,时间无处打发,就写写文章玩玩,
我是做工控行业的,网络通讯的重要性就毋庸置疑了,比如,PLC和上位机之通讯,只能相机和上位机通讯,扫码器和上位机通讯,等等,当然则是后话,万丈高楼平地起,没有基础什么都是百搭,还是来个简单的客户端把;
界面如下图所示:
设计原理如下图客户端测所示
private void button2_Click(object sender, EventArgs e)
{
//连接成功后,开始发送数据
if(client.Connected)
{
string str= textBox3.Text.Trim();
byte[] buffers = Encoding.Default.GetBytes(str);
client.Send(buffers);
}
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "192.168.1.103";
textBox2.Text = "8080";
Control.CheckForIllegalCrossThreadCalls = false;
}
Socket client = null;
private void button1_Click(object sender, EventArgs e)
{
try
{
//1.创建socket对象
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//2.建立连接
client.Connect(new IPEndPoint(IPAddress.Parse(textBox1.Text.Trim()), Int32.Parse(textBox2.Text.Trim())));
textBox3.AppendText("已经连接上主机:" + client.LocalEndPoint + "--->" + client.RemoteEndPoint + "\r\n");
//3.接收数据、数据需要循环接收,所以开线程还是比较适合的
Thread td1 = new Thread(Receive);
td1.IsBackground = true;
td1.Start();
}
catch
{
}
}
void Receive()
{
//看到了循环接收,那好办,我们搞个循环把
while(true)
{
//我们现在搞简单点,只接收小型的文本
byte[] buffers = new byte[5 * 1024 * 1024];
int length= client.Receive(buffers);
//如果和服务器断开连接
if (length == 0) break;
string str = Encoding.Default.GetString(buffers,0,length);
textBox4.AppendText(str+"\r\n");
}
}