我已經嘗試了很多可能的解決方案,不同類型的寫入和讀取流和所有。但我似乎無法讓我的代碼工作。C#代碼在試圖從網絡流中讀取時掛起
我基本上只想發送消息到localhost:25565,然後用Console.WriteLine()從localhost:25565讀回消息。
public void Connect(String server, String message)
{
Int32 port = 25565;
string localhost = "127.0.0.1";
IPAddress localAdd = IPAddress.Parse(localhost);
TcpListener listener = new TcpListener(localAdd, port);
Console.WriteLine("listening...");
listener.Start();
try
{
TcpClient client = new TcpClient(server, port);
client.NoDelay = true;
NetworkStream stream = client.GetStream();
if (stream.CanWrite)
{
Console.WriteLine("You can write to this NetworkStream.");
StreamWriter writer = new StreamWriter(client.GetStream());
writer.Write(message);
writer.Flush();
}
else
{
Console.WriteLine("Sorry. You cannot write to this NetworkStream.");
}
Console.WriteLine("Sent: {0}", message);
String responseData = String.Empty;
Console.WriteLine("InBetween test");
if(stream.CanRead)
{
Console.WriteLine("You can read this stream");
StreamReader reader = new StreamReader(stream);
string recievedData = reader.ReadToEnd();
Console.WriteLine(recievedData);
}
else
{
Console.WriteLine("Sorry. You cannot read from this NetworkStream.");
}
Console.WriteLine("All completed test");
stream.Close();
client.Close();
}
catch (ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: {0}", e);
}
catch (SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
Console.WriteLine("\n Press Enter to continue...");
Console.Read();
}
這是我調試我的應用程序時出現的內容。 https://gyazo.com/95464cc4201c98ccd04cac004b0ea540
它停止後您可以閱讀這個流。
非常感謝您的幫助。
這似乎是的服務器代碼('TcpListener')和客戶端代碼('TcpClient')的混合,但在任何時候或者是分別連接到客戶機或服務器。查看['TcpClient.GetStream']的文檔(https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.getstream.aspx):「您必須先調用Connect方法,」 – Richard
謝謝你我會研究這個! – DarthFoot