2015-10-26 2 views
-1

Почему он не извлекает данные с сервера и с клиента на сервер? Мой метод «odbierz» плох? Я хотел бы отправить данные с сервера на клиент, а затем клиент отправил данные на сервер при изменении.Восстановить данные сокетов java

Client класс

public class Klient { 

    private Socket sock; 
    private PrintWriter out; 
    private BufferedReader in; 



public Klient() throws UnknownHostException, IOException 
{ 
     sock=new Socket("localhost",50007);              
     System.out.println("Nawiazalem polaczenie: "+sock); 
     in=new BufferedReader(new InputStreamReader(sock.getInputStream())); 
     out=new PrintWriter(sock.getOutputStream(), true); 
} 
public void wyslijDane(int numerKart) throws IOException 
{ 
     System.out.print("<Wysylamy:> ");             

      out.print(numerKart); 
      out.flush(); 
      System.out.println("Wyslano kartę" + numerKart); 
} 

public void odbierz() throws IOException 
{ 
      String str; 

      if(in.ready()) 
      { 
       while(true) 
       { 
      str=in.readLine(); 
      System.out.println("<Nadeszlo:> " + str); 
       } 
      } 
      else 
       System.out.println("Zajetre"); 

} 
    public static void main(String[] args) throws IOException        
    {                     

    } 
} 

public class Server 
{ 
    public static final int PORT=50007; 
    private ServerSocket server; 
    private Socket sock; 
    private PrintWriter out; 
    private BufferedReader in; 


public Server() throws IOException 
{ 

    server=new ServerSocket(PORT); 
    System.out.println("Nasluchuje: "+ server); 
    sock=server.accept(); 
    System.out.println("Jest polaczenie: "+sock); 
    in=new BufferedReader(new InputStreamReader(sock.getInputStream())); 
    out=new PrintWriter(sock.getOutputStream(), true);           


public void wyslijDane(int numerKarty) throws IOException 
{ 
     System.out.print("<Wysylamy:> ");             
     out.print(numerKarty); 
     out.flush(); 
     System.out.println("Wyslano kartę" + numerKarty); 
    } 

    } 
+0

методы на другом языке, чем английский увеличить сложность, чтобы понять и следовать алгоритму ... перевод и редактирование пожалуйста –

ответ

1

Я не знаю, как и где вы вызываете метод odbierz(), но while(true) бесконечный цикл, который, вероятно, почему ваша программа не работает.

Попробуйте удалить петлю:

public void odbierz() throws IOException { 
     String str; 

     if(in.ready()) { 
      str=in.readLine(); 
      System.out.println("<Nadeszlo:> " + str); 
     } else { 
      System.out.println("Zajetre"); 
     } 
} 
+0

Ok сейчас работает, но у меня есть еще одна проблема. Я отправил данные с сервера и получил, когда я показываю, но если отправлено, например, int = 5 получает на клиент, например 51 и т. Д. например, сервер: отправлено int 13 клиент: восстановление с сервера INT 49 – Pekus

+0

Эти числа являются значениями ascii целое число, которое вы отправили. Чтобы получить целое число вместо значения ascii, вы должны использовать 'out.println()' вместо 'out.print()'. – CtrlAltDel

+0

не работает. Я также получаю значения в ascii. – Pekus

Смежные вопросы