• TCP通讯CS模式之C#设计笔记(十八)


    一、服务器端侦听到客户端连接后,可通过发送与接收函数实现数据交互、通讯,如下是客户端与服务器端实现具体流程与示例,仅供参考。
    二、客户端:
    1、Client启动
    TcpClient tcp=new TcpClient(ip,port);
    tcp.ReceiveTimeout=1000;
    2、Client连接
    NetworkStream stream = tcp.GetStream();
    3、数据发送
    if (stream.CanWrite)
    {
    byte[] StreamByte = new Byte[1024];
    StreamByte = NGANCore.TCPListener.strToToByte(sendText);
    stream.Write(StreamByte, 0, StreamByte.Length);
    }
    4、数据接收
    if (stream.CanRead)
    {
    byte[] StreamByte = new Byte[1024];
    stream.Read(StreamByte, 0, StreamByte.Length);
    ReciveText = NGANCore.TCPListener.byteToStr(StreamByte);
    }
    5、关闭client
    tcp.close();
    三、服务器端
    1、定义TCP消息类
    public class TCPMessage
    {
    public bool Issend { get; set; }
    public int Port { get; set; }
    public string ReciveMessage { get; set; }
    public string SendMessage { get; set; }
    public TCPMessage()
    {
    Issend = false;
    Port = 8080;
    SendMessage = “”;
    ReciveMessage = “”;
    }
    public TCPMessage(bool issend, int port, string Sendmessage, string Recivemessage)
    {
    Issend = issend;
    Port = port;
    ReciveMessage = Recivemessage;
    SendMessage = Sendmessage;
    }
    }
    2、定义TCP事件参数
    public class TcpEventArgs : EventArgs
    {
    public string TcpMsg { get; set; }
    public TcpEventArgs(string msg)
    {
    TcpMsg = msg;
    }
    }
    3、服务端启动
    TcpListener server = new TcpListener(TcpCmd.Port);
    server.Start();
    4、侦听
    TcpClient tcp = server.AcceptTcpClient();
    NetworkStream stream = tcp.GetStream();
    5、发送
    if (stream.CanWrite)
    {
    if (TcpCmd.SendMessage.Trim() != “”)
    {
    byte[] StreamByte = new byte[2048];
    StreamByte = strToToByte(TcpCmd.SendMessage);
    stream.Write(StreamByte, 0, StreamByte.Length);
    }
    }
    6、接收
    if (stream.CanRead)
    {
    byte[] StreamByte = new byte[2048];
    if (stream.Read(StreamByte, 0, StreamByte.Length)>0)
    {
    string strRecive = byteToStr(StreamByte);
    AddDataToList(new TCPMessage(false, TcpCmd.Port, TcpCmd.SendMessage, strRecive));//添加到接收消息队列中
    return true;
    }
    else
    {
    return false;
    }
    }
    7、关闭
    stream.Close();
    tcp.Close();
    server.Stop();

  • 相关阅读:
    TypeScript学习二(变量声明)
    Java JDK 安装
    Gin+getway+Fabric2.4.4演示
    nodejs在linux下的源代码方式安装
    【C++中预处理语句 include、define、if】
    PTA--1014 Waiting in Line(模拟队列)
    skywalking 6.4 分布式链路跟踪 使用笔记
    Arduino框架下轻量级ssd1306 I2C屏幕驱动库
    8.6 枚举类型
    c++和java实现策略模式的差异
  • 原文地址:https://blog.csdn.net/weixin_48408892/article/details/127956483