LINUX.ORG.RU

TCP сервер на Java, проблема


0

0

Написал простенький многопоточный сервер, но возникла проблема.
Посылаю из скрипта на питоне например строку "Hi", приходят 104 и 105.
Скрипту в ответ ничего не приходит. В коде виден закоментированный классический вариант, без javolution.
Он тоже не работает. Помогите пожалуйста разобратся: 

Main.java:
package fantasyserver;

import fantasyserver.talker;
import java.net.*;
import java.io.*;

public class Main {

    public Main() {
    }

    public static void main(String[] args) throws IOException {
        try {
            ServerSocket sock = new ServerSocket(8000, 1000);
            while (true) {
                Socket client = sock.accept();
                new talker(client).thread.start();
            }
        }  catch (IOException e) {
            System.out.println("Could not listen on port: 8000");
            System.exit(-1);
        }
    }
}

talker.java:
package fantasyserver;
import java.net.*;
import java.lang.Runnable;
import java.io.*;
import javolution.io.*;

public class talker implements Runnable {
    //private PrintWriter out = null;
    //private BufferedReader in = null;
    private Socket client;
    private UTF8StreamWriter out = new UTF8StreamWriter();
    private UTF8StreamReader in = new UTF8StreamReader();
    public Thread thread;

public talker(Socket client) throws IOException {
        this.client = client;
        this.out.setOutput(this.client.getOutputStream());
        this.in.setInput(this.client.getInputStream());
        //this.out = new PrintWriter(this.client.getOutputStream(), true); 
        //this.in = new BufferedReader(new InputStreamReader(this.client.getInputStream()));
        thread = new Thread(this);
    }
    public void run() {
        try {
            while (true) {
                System.out.println(in.read());
                out.write("Test");
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

В коде не разбирался особо. Попробуй out.flush();

olegk ★★
()

Немного разобрался, поток затыкался на чтении. Теперь данные приходят, но получить их в виде plain text у меня никак не получается =(

Motiv_studenta ★★
() автор топика

Разобрался, надо юзать методы ready и readLine класса BufferedReader

Motiv_studenta ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.