hej :)
mam za zadanie zrobić aplikację sieciową typu klient-serwer. Zrobiłem ja w C (gniazda BSD). Teraz przyszła kolej, by napisać jeszcze jednego klienta - w Javie. Niestety znam podstawy (składnię) Javy i mam problem. Otóż tu mamy część kodu serwera (już po nawiązaniu połączenia) w C:
while (fgets(bufor, sizeof(bufor), odczyt)) {
bufor[strlen(bufor)-1] = '\0';
printf("%s", bufor);
fputs("czesc\n", zapis);
}
Jak widać, nieskończona pętla, która wyswietla żadanie klienta i wysyła do niego "czesc\n" (znak nowej linii jest konieczny, inaczej klient nie otrzymuje nic - nie wiem dlaczego). Teraz jakbym chciał wysłać np "czesc\nuser\njak tam?\n", zaczynają się problemy, które myślę że są po stronie klienta, oto jego cały kod:
import java.io.*;
import java.net.*;
public class Klient {
public static void main(String args[]) throws IOException {
String zadanie;
String odpowiedz;
InetAddress adres = InetAddress.getByName(args[0]);
int port = Integer.parseInt(args[1]);
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket(adres, port);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while(true) {
System.out.print("\t => ");
zadanie = inFromUser.readLine();
if (zadanie.charAt(0) == 'q') { break; } // wyjscie z petli gdy pierwsza litera żądania = q
outToServer.writeBytes(zadanie + '\n');
odpowiedz = inFromServer.readLine();
System.out.println(odpowiedz);
}
clientSocket.close();
}
}
myślę, że bład jest w linii gdzie klient czeka na opdowiedz serwera:
odpowiedz = inFromServer.readLine();
na strumieniu wykonywana jest metoda readLine(), która czyta wiersz, na co ją zmienić, o ile o to chodzi??
pozdr :)