2012-03-24 10 views
0

Ich habe einen Client entwickelt, der eine Verbindung zu einem Server herstellt. Der Client schreibt etwas auf den Server und der Server liest und antwortet dem Client. Der Client liest dann, was der Server sagte und beide beenden. Ich möchte dies erweitern und es dem Client und dem Server erlauben, weitere 3 Mal zu sprechen und dann zu beenden. Ich habe eine for-Schleife erzeugt, in der ich den Code gelesen und geschrieben habe, sowohl auf dem Server als auch auf dem Client, aber er endet in einer Endlosschleife und schreibt den Text, der beim ersten Mal eingegeben wurde, anstatt den Benutzer dazu aufzufordern neue Daten eingebenServer/Client-Nachricht in C übergeben

Der Server-Code, wo die Lese-/Schreib behandelt wird, ist wie folgt:

int temp = 0; 
char cha [10] = "helloworld"; 
while(temp = 3){ 

int rc; 
char ch[100]; 


rc = read(newsockfd, &ch, 100); 
    printf("Client sent: %s\n", ch) ;  

    write(newsockfd, cha + temp, 100); 

temp ++; 
} 


close(sockfd); 
close(newsockfd); 

Dies ist der Client-Code ist in dem Lese-/Schreib behandelt wird:

int temp = 0; 
char cha[10] = "abcdefhijk"; 

while(temp = 3)  
{ 
int rc; 
char ch2 [100]; 

rc = write(sockfd, cha + temp, 100); 

    read(sockfd, &ch2, 100); 
    printf("Server said: %s\n", ch2); 

temp ++; 
} 


sleep(2); 
close(sockfd); 

Auch ich das bin Schließen Dateideskriptoren, nachdem die Schleife abgeschlossen ist.

Jede Hilfe ist sehr

geschätzt
+4

'while (temp = 3)' sieht aus wie ein Tippfehler. Vorschlag: Verwenden Sie eine for() -Schleife. – wildplasser

Antwort

2

Könnten Sie den Loop-Code bieten auch? Und verwenden Sie blockierende oder nicht blockierende Aufrufe von read() und write()? (Das heißt, kehren sie sofort zurück, unabhängig davon, ob Daten verfügbar sind (nicht blockierend) oder blockieren sie, bis etwas verfügbar ist (Blockierung))?

Aktualisierung: Wenn der Code, den Sie posteten, der tatsächliche Code ist, dann ist Ihre while-Schleife fehlerhaft. Sie überprüfen für

Das ist immer wahr, wie Sie gerade "3" zu temp zuweisen. Sie meinen wahrscheinlich

temp < 3 

?

+0

Ich bin mir nicht sicher, ob das Lesen und Schreiben blockieren oder nicht blockieren, aber von was ich sagen kann ist, dass der Server in der ersten Schleife darauf wartet, dass der Client ihm etwas sendet, was ich daher seine Blockierung voraussetze. aber ich bin mir nicht sicher ... ich werde update auf code oben einschließlich der loop .. – cgval

+0

Willkommen bei SO! Bitte stellen Sie alle Ihre Fragen im Abschnitt Kommentare und nicht in Antworten auf den Fragesteller. –

+1

Pavan, ich würde das gerne machen, aber leider habe ich noch nicht genug Reputation, um in der Lage zu sein, ... zu anderen Leuten Fragen zu stellen, erfordert mindestens eine Wiederholung von 50 ... – sonicwave