Ich bin mit Sockets für TCP-IP-Verbindung und ich möchte ein einfaches System senden-erhalten von der Client-Seite einrichten.C# Client-Socket mehrere senden und empfangen
Socket sck;
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpt = new IPEndPoint(IPAddress.Parse("123.123.123.1"), 12345);
try
{
sck.Connect(localEndpt);
}
catch
{
Console.Write("Unable to Connect");
}
while (true)
{
Console.WriteLine("Enter Text");
string sendtext = Console.ReadLine();
byte[] Data = Encoding.ASCII.GetBytes(sendtext);
sck.Send(Data);
Console.WriteLine("Data Sent!");
byte[] bytesReceived = new byte[sck.ReceiveBufferSize];
int bytes = 0;
String strReceived = "";
int dataAvailable = 0;
while (dataAvailable == 0 || dataAvailable != sck.Available)
{
dataAvailable = sck.Available;
Thread.Sleep(100); // if no new data after 100ms assume transmission finished
}
if (sck.Available > 0)
{
bytes = sck.Receive(bytesReceived, bytesReceived.Length, 0);
strReceived+=Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
Console.WriteLine("Received from server: " + strReceived);
}
Console.Read();
Das Problem ist, dass erste Anfragen geht Throught aber die zweite nicht, weil Buchse nicht mehr vorhanden ist (Buchse „Availabe“ Attributwert ist 0). Was mache ich falsch? Was wäre der einfachste Weg, mehrere Sende-Empfangs-Anfragen (in der Reihenfolge) zu erstellen?