[英]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上午:
該程序的輸出如下:
我們需要您發布雙方代碼。 不過,這里有一些代碼可以正常工作,您可以使用它來查看是否做錯了什么。
http://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.