我正在使用TCPClient和TCPListener进行TCP Messenger程序ATM。一切正常。我已经将这两个程序放在单独的程序中,现在我基本上是在尝试使其成为一个程序。我坚持这样一个事实,即在检查接收之前,我一直写一些东西要发送,直到它一直等待着。我是C#和学习的新手。因此,我需要一种方法来检查“是否编写了某些内容?如果否,请跳过此步骤”,基本上是在问是否编写了某些内容。
我试图使它像“如果现在存储的行与上次相同,请跳过它”,这样它就不会无限地停留在程序的Send扇区中。但是它仍然总是等到我写了一些东西之后才检查/跳过它。
这是写和发送循环代码:
nachricht = Console.ReadLine();
if (nachrichtcheck != nachricht)
{
Console.WriteLine("test1");
TcpClient clientnachricht = new TcpClient(zielip, port);
NetworkStream streamnachricht = clientnachricht.GetStream();
sendnachricht = Encoding.ASCII.GetBytes(nachricht);
streamnachricht.Write(sendnachricht, 0, sendnachricht.Length);
streamnachricht.Close();
clientnachricht.Close();
nachrichtcheck = nachricht;
Console.WriteLine("test2");
}
else
{
if (empfangstream.CanRead)
{
Console.WriteLine("test3");
byte[] receivedBuffer2 = new byte[100];
NetworkStream stream = empfangclient.GetStream();
stream.Read(receivedBuffer, 0, receivedBuffer.Length);
StringBuilder msg2 = new StringBuilder();
foreach (byte b in receivedBuffer)
{
if (b.Equals(00))
{
break;
}
else
msg2.Append(Convert.ToChar(b).ToString());
}
Console.WriteLine("test4");
empfangscheck2 = msg2.ToString();
if (empfangscheck2 != empfangscheck)
{
Console.WriteLine(msg2.ToString());
empfangscheck = msg2.ToString();
Console.WriteLine("receive");
}
}
}
因此,如果有人可以帮助我,只是想办法让bool检查是否已写东西->然后使用它。除了等到写东西,否则->使用它会帮助我加倍努力。
答案 0 :(得分:0)
我有替代方法来解决您的问题。您可以使用线程来等待用户输入,而不是实际的代码。
using System;
using System.Threading;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string nachricht = "";
double AndereTätigkeitBeweis = 0;
Thread NachrichtenEinleser = new Thread(()=> {
Console.Write("Gib diene zu sendende Nachricht ein: ");//Type in the message you'd like to send
nachricht = Console.ReadLine();//Read the user Input without stopping the actual code because it's another process
});
NachrichtenEinleser.Start();
//do somewhat activity until you get a user input
while (nachricht == ""){
AndereTätigkeitBeweis++;
}
//Write out the user input
Console.WriteLine($"User Input: {nachricht}|AndereTätigkeitBeweis: {AndereTätigkeitBeweis}");
Console.ReadLine();
}
}
}
输出示例:
Gib Diene zu sendende Nachricht ein:哈罗
用户输入:hallo |AndereTätigkeitBeweis:560075647
希望这会有所帮助。