标题: 基于wifi的上位机模块C#源码 Server与client [打印本页]

作者: Virogous    时间: 2019-2-28 19:42
标题: 基于wifi的上位机模块C#源码 Server与client
基于wifi的上位机模块


C#源程序如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;

  10. using System.Net;
  11. using System.Net.Sockets;

  12. namespace ServerApp
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         /// <summary>
  17.         /// 服务器本地端口
  18.         /// </summary>
  19.         private const int LOCAL_PORT = 1500;

  20.         TcpListener listener = null;

  21.         public Form1()
  22.         {
  23.             InitializeComponent();
  24.         }

  25.         private void Form1_Load(object sender, EventArgs e)
  26.         {
  27.             listener = new TcpListener(IPAddress.Any, LOCAL_PORT);
  28.             // 开始监听
  29.             listener.Start();
  30.             AppendToTextBox("已开始监听连接。");
  31.             // 开始接受连接
  32.             listener.BeginAcceptTcpClient(new AsyncCallback(acceptCallback), listener);
  33.         }

  34.         private void acceptCallback(IAsyncResult ar)
  35.         {
  36.             TcpListener lstn = (TcpListener)ar.AsyncState;
  37.             // 开始接收数据
  38.             TcpClient client = lstn.EndAcceptTcpClient(ar);

  39.             Task.Run(() =>
  40.                 {
  41.                     // 获取远程主机名
  42.                     string host = client.Client.RemoteEndPoint.ToString();
  43.                     // 获取流对象
  44.                     NetworkStream stream = client.GetStream();
  45.                     string msg = null;
  46.                     while(true)
  47.                     {
  48.                         // 读取长度
  49.                         byte[] buffer = new byte[4];
  50.                         stream.Read(buffer, 0, 4);
  51.                         int len = BitConverter.ToInt32(buffer, 0);
  52.                         // 读取正文
  53.                         buffer = new byte[len];
  54.                         stream.Read(buffer, 0, len);
  55.                         string recMsg = Encoding.UTF8.GetString(buffer);
  56.                         if (recMsg == "$END$")
  57.                         {
  58.                             string message = "客户端" + host + "发送了退出指令。";
  59.                             txtRecMsgs.Invoke(new Action(() => AppendToTextBox(message)));
  60.                             break; //退出
  61.                         }
  62.                         else
  63.                         {
  64.                             txtRecMsgs.Invoke((Action)delegate()
  65.                             {
  66.                                 // 显示收到的消息
  67.                                 string message = string.Format("来自{0}的消息:{1}", host, recMsg);
  68.                                 AppendToTextBox(message);
  69.                             });
  70.                         }
  71.                     }
  72.                     client.Close();
  73.                 });
  74.             // 继续接受连接
  75.             lstn.BeginAcceptTcpClient(new AsyncCallback(acceptCallback), lstn);
  76.         }

  77.         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  78.         {
  79.             if (listener != null)
  80.                 listener.Stop(); //停止监听
  81.         }

  82.         private void AppendToTextBox(string msg)
  83.         {
  84.             txtRecMsgs.AppendText(msg + "\r\n");
  85.         }
  86.     }
  87. }
复制代码

所有资料51hei提供下载:
wifi上位机.rar (393.83 KB, 下载次数: 68)



作者: xzj3203577    时间: 2019-3-29 08:37
顶楼主,这个可以有
作者: huming18    时间: 2019-4-3 09:07
这个不错的 谢谢
作者: zixiaguying    时间: 2019-5-29 08:54
好东西啊

作者: zixiaguying    时间: 2019-5-29 08:54
东西确实不错的额




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1