TCPCLIENT auf nonBlocked schalten
-
Hi Leute
ich habe mal wieder ein Problem.
Ich mache eine TCP Verbindung zu einem Server auf. Das klappt auch wunderbar. Nur sobald der Server nicht verfügbar ist Blockiert sich mein Programm komplett.
Ist es möglich diese Verbindung abzufangen und auf unblockiert zu schalten? Ich finde in der MSDN nichts...
Hier mal mein Code:array<Byte>^ myReadBuffer = gcnew array<Byte>(1024); String^ myCompleteMessage = ""; int numberOfBytesRead = 0; int et=255; Int32 port = 12354; TcpClient^ client = gcnew TcpClient; TcpClient^ client2 = gcnew TcpClient; try { TcpClient^ client = gcnew TcpClient; TcpClient^ client2 = gcnew TcpClient; if (client->Connected==false) { client->Connect("192.168.111.74",12354); client2->Connect( "192.168.111.74",12355 ); } if (client->Connected==true) { NetworkStream^ stream = client->GetStream(); NetworkStream^ stream2 = client2->GetStream(); do { numberOfBytesRead = stream->Read( myReadBuffer, 0, myReadBuffer->Length ); myCompleteMessage = String::Concat( myCompleteMessage, Encoding::ASCII->GetString( myReadBuffer, 0, numberOfBytesRead ) ); } while ( stream->DataAvailable ); label4->Text=myCompleteMessage; if ( stream->CanWrite ) { array<Byte>^ myWriteBuffer = Encoding::ASCII->GetBytes( "Are you receiving this message?" ); stream->Write( myWriteBuffer, 0, myWriteBuffer->Length ); } } } catch(Exception^ ex) { label5->Text ="Keine Verbindung zum CE"; }
Hoffe ihr habt mir einen Tip wie ich das lösen kann.
Dank euch im vorraus.Viele Grüße
Andreas
-
Hi,
Verwende doch die asynchronen Aufrufe wie z.B. TcpClient::BeginConnect(..).
http://msdn.microsoft.com/en-us/library/xw3y33he.aspxGruss Simon
-
Hi
Danke für deine Antwort.
Leider hat das nicht funktioniert. Ich habe es nicht hinbekommen anhand des Beispiel Codes hat es nicht funktioniert.
Gibt es noch ne andere Möglichkeit?Danke
Gruß
Andreas
-
Warum hat es nicht funktioniert?
Was hat nicht funktioniert?Damit die Applikation nicht "blockiert" kannst Du auch Threads verwenden.