簡體   English   中英

c#tcpclient程序寫入流但客戶端未接收到數據

[英]c# tcpclient program writing to stream but client not receiving data

我已經編寫了一個TCPClient程序以在我的PC上運行。 它首先啟動TCP偵聽器以偵聽特定端口,然后從多個線程上的多個TCP客戶端讀取/寫入。
我能夠從客戶端讀取數據,但是每當我嘗試向其發送數據時,程序都會顯示它已發送數據,但是客戶端什么也沒收到。

這是代碼:

            TcpClient client = listener.AcceptTcpClient();
            var childSocketThread = new Thread(() =>
            {
                if (client.Connected)
                {
                    using (NetworkStream stream = client.GetStream())
                 {
                    Console.WriteLine("connected");
                    byte[] data = new byte[1000];
                    try
                    {
                        if (stream.CanRead)
                        {
                            stream.Read(data, 0, 1000);
                            string dataStr = Encoding.ASCII.GetString(data);
                            string dataa = dataStr.TrimEnd('\0');
                            //Console.WriteLine(dataa);
                            if (dataa.Length > 10)
                            {
                                deviceid = ParseRequest(dataa);

                                byte[] sendnow = Encoding.ASCII.GetBytes(reply[deviceid]);

                                Array.Clear(data, 0, 1000);
                                Console.WriteLine("Recieved data: " + dataa);
                                Console.WriteLine("Sending data");
                                using (StreamWriter writer = new StreamWriter(stream))
                                {
                                    writer.AutoFlush = true;
                                    writer.WriteLine(reply[deviceid]);
                                }
                                Console.WriteLine(reply[deviceid]);
                                Console.WriteLine("Sent");
                            }

                            Console.WriteLine();
                        }
                    }
                    catch (Exception es)
                    {
                        Console.WriteLine(es);
                    }
                 }
                }

            });
            childSocketThread.Start();    

我正在使用的服務器設備是PLC。 另外,我已經嘗試過的東西:
1)直接使用Socket.Send方法發送。
2)直接使用NetworkStream方法發送。
3)接受TCP連接作為套接字。 Socket device = listener.AcceptSocket )。

這些方法似乎都沒有發送到設備,即使該程序告訴我它發送數據沒有問題,因為它在嘗試發送數據后顯示“已發送”。 我從此鏈接http://www.codeproject.com/Articles/488668/Csharp-TCP-Server下載了另一個程序。 他們提供的測試應用程序能夠與在同一台PC上運行的程序在同一端口上發送和接收數據。

對於如何進行診斷以及更重要的是解決這個問題,我還沒有任何方向。 有任何想法嗎?

更新2015-08-10 11:18上午:
該程序的輸出如下: 在此處輸入圖片說明

更新2015-08-10 11:32上午:
Syslog控制台的輸出: 在此處輸入圖片說明

更新2015-08-10 12:07 pm:
Wireshark的輸出:
在此處輸入圖片說明

我們需要您發布雙方代碼。 不過,這里有一些代碼可以正常工作,您可以使用它來查看是否做錯了什么。

http://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM