第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

TcpListener 客戶端保持連接發(fā)送多條消息,但服務(wù)器只接收或處理第一條消息

TcpListener 客戶端保持連接發(fā)送多條消息,但服務(wù)器只接收或處理第一條消息

C#
撒科打諢 2022-07-23 18:03:42
我正在設(shè)置一個(gè)服務(wù)器來(lái)使用 TcpListener 讀取一些網(wǎng)絡(luò)客戶端??蛻舳税l(fā)送一些數(shù)據(jù),我驗(yàn)證該數(shù)據(jù)并發(fā)送對(duì)該數(shù)據(jù)的響應(yīng),客戶端保持連接并發(fā)送第二個(gè)響應(yīng),然后我驗(yàn)證該數(shù)據(jù)并發(fā)送回響應(yīng),就像登錄服務(wù)器兩次一樣。第一次登錄被發(fā)送回客戶端就好了,但是客戶端第二次響應(yīng)服務(wù)器并沒有顯示它從客戶端收到了更多的數(shù)據(jù)。我已經(jīng)通過(guò)設(shè)置一個(gè)虛擬客戶端(真正的客戶端是基于手機(jī)的 ODB2)對(duì)其進(jìn)行了測(cè)試。設(shè)置了虛擬客戶端后,我確實(shí)驗(yàn)證了第一次握手發(fā)生了,但是當(dāng)客戶端發(fā)送第二組文本時(shí),它沒有顯示在服務(wù)器上。class Program{    static private TcpListener listener = null;    static private TcpClient client = null;    static private NetworkStream stream = null;    static private int iCount = 0;    static Int32 port = 8090;    static IPAddress localAddr = IPAddress.Parse("192.168.1.17");    static void Main(string[] args)    {        listener = new TcpListener(localAddr, port);        listener.Start();        while (true)        {            try            {                client = listener.AcceptTcpClient();                ThreadPool.QueueUserWorkItem(ThreadProc, client);            }            catch (IOException ioex)            {                RestartStream();            }        }    }        private static void ThreadProc(object obj)        {        var client = (TcpClient)obj;        Byte[] bytes = new Byte[client.ReceiveBufferSize];        stream = client.GetStream();        try        {            int bytesRead = stream.Read(bytes, 0, (int)client.ReceiveBufferSize);            string returndata = Encoding.ASCII.GetString(bytes, 0, bytesRead).Replace("-", "");            byte[] sendBytes;            if (returndata.ToLower().StartsWith("7e") && returndata.ToLower().EndsWith("7e"))            {             //… do stuff with the data and send it back to the client              sendBytes = Encoding.Default.GetBytes(login1);             stream.Write(sendBytes, 0, sendBytes.Length);             stream.Flush();                              }                              else                {                    SaveStream(returndata);                }            }我需要發(fā)生的是我的理解是客戶端始終保持連接并一遍又一遍地發(fā)送數(shù)據(jù),我的系統(tǒng)似乎接受它一次然后停止接收它,我需要它繼續(xù)接收客戶端數(shù)據(jù)并處理它。
查看完整描述

1 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

好的,所以我想通了,線程中應(yīng)該有第二個(gè) while 循環(huán)。


static void Main(string[] args)

    {

        listener = new TcpListener(localAddr, port);

        var clientSocket = default(TcpClient);

        listener.Start();

        var counter = 0;

        while (true)

        {

            clientSocket = listener.AcceptTcpClient();

            var client = new ConnectedDevice();

            client.startClient(clientSocket, counter.ToString(), sqlConnString);

        }

    }

連接設(shè)備類:


class ConnectedDevice

{

    private TcpClient _clientSocket;

    private string _clientNumber;

    private string _sqlConnString;


    public void startClient(TcpClient clientSocket, string clientNumber, string sqlConnString)

    {

        _clientSocket = clientSocket;

        _clientNumber = clientNumber;

        _sqlConnString = sqlConnString;


        var ctThread = new Thread(ProcessClient);

        ctThread.Start();

    }

    private void ProcessClient()

    {

        while (_clientSocket.Connected)

        {

            try

            {

                Byte[] bytes = new Byte[_clientSocket.ReceiveBufferSize];

                var networkStream = _clientSocket.GetStream();

                networkStream.ReadTimeout = 10000;

                int i;

                while ((i = networkStream.Read(bytes, 0, bytes.Length)) != 0)

                {

                    var data = System.Text.Encoding.ASCII.GetString(bytes, 0, i).Replace("-", "");

                    byte[] sendBytes;

                    Console.WriteLine(data);

                    string sLogin1 = "7E81000013014185000008000000000054523230313731303138303930303137497E";

                    sendBytes = Encoding.ASCII.GetBytes(sLogin1);

                    networkStream.Write(sendBytes, 0, sendBytes.Length);

                    networkStream.Flush();

                }

            }

            catch (Exception ex)

            {


            }

        }

    }


查看完整回答
反對(duì) 回復(fù) 2022-07-23
  • 1 回答
  • 0 關(guān)注
  • 446 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)