.net中用标志位解决socket粘包问题

以下为wpf中, 用标志位"q" 解决粘包问题

using MyFrameWorkWpf.Entities;
using System.Collections.ObjectModel;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Controls;

namespace MyFrameWorkWpf.ViewModels
{
    public partial class TcpServerViewModel : ObservableObject
    {
        public TcpServerViewModel()
        {
            myIp = "192.168.2.100";
            myPort = "8888";


        }

        //声明一个Socket对象
        private Socket socketServer = new Socket(
            AddressFamily.InterNetwork,
            SocketType.Stream,
            ProtocolType.Tcp
        );

        private CancellationTokenSource cts = new();
        private ManualResetEvent resetEvent = new ManualResetEvent(true);
        private static readonly object lockObj = new object(); // 创建一个对象作为锁
        private readonly MyRArr myRArr;

        //创建字典集合,键是ClientIp,值是SocketClient
        private Dictionary<string, Socket> currentClientlist = new Dictionary<string, Socket>();

        private ObservableCollection<string> serverList = new();

        public ObservableCollection<string> ServerList
        {
            get => serverList;
            set => SetProperty(ref serverList, value);
        }

        private string myIp = "";

        public string MyIp
        {
            get => myIp;
            set => SetProperty(ref myIp, value);
        }

        private string myPort = "";

        public string MyPort
        {
            get => myPort;
            set => SetProperty(ref myPort, value);
        }

        private ObservableCollection<TcpMessage> reciveData = new();

        public ObservableCollection<TcpMessage> ReciveData
        {
            get => reciveData;
            set => SetProperty(ref reciveData, value);
        }

        private string sendTxt = "";

        public string SendTxt
        {
            get => myPort;
            set => SetProperty(ref myPort, value);
        }

        private bool isEnabled = true;

        public bool IsEnable
        {
            get => isEnabled;
            set => SetProperty(ref isEnabled, value);
        }

        public RelayCommand<RadioButton> SelectView { get; private set; }

        //public RelayCommand

你可能感兴趣的:(.net)