Клиент не передает сообщения серверу

163
26 сентября 2017, 05:19

Подскажите, пожалуйста в чем может быть проблема - клиент подключается, но не передает данные на сервер ? (В логах пусто) Клиент и сервер находятся на одном хосте, при подлючении по telnet сообщения доставляются.

Сервер сокет:

public class Server extends Thread {
private ServerSocket socket;
private static int PORT = 5678;
public Server () {
    this(PORT);
}
public Server (int p) {
    int PORT = p;
    setServerPort(PORT);
}
private void setServerPort(int p) {
    Server.PORT = p;
}
public ServerSocket getServerSocket() {
    return this.socket;
}
@Override
public void run() {
    try {
        ServerSocket socket = new ServerSocket(PORT);
        this.socket = socket;
        System.out.println("Sever running at port: " + PORT);
        while (true) {
            Socket accept = socket.accept();
            new ServeOneClient(accept);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Сервер-клиенты:

public class ServeOneClient extends Thread {
private Socket socket;
private OutputStreamWriter out;
private BufferedReader in;
public ServeOneClient (Socket socket) {
    this.socket = socket;
    System.out.println("Client connected: " + socket.toString());
    this.start();
}
@Override
public void run() {
    while (true) {
        try {
            out = new OutputStreamWriter(socket.getOutputStream());
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));            
            System.out.println(" Line + " + in.readLine());
        } catch (IOException s) {
            try {
                System.out.println("Client connection closed " + socket.toString());
                socket.close();
            } catch (IOException c) {
                c.printStackTrace();
            }
            s.printStackTrace();
        }
    }
}

}

Код клиента :

public class Client extends Thread {
private Socket connect;
private ObjectOutputStream output;
private ObjectInputStream input;
private String address;
private int port;
public Client(String a, int p) throws InterruptedException, IOException {
    address = a;
    port = p;
}
private void setConnect (Socket c) {
    this.connect = c;
}
private void setOOS (ObjectOutputStream output) {
    this.output = output;
}
private void setOIS (ObjectInputStream input) {
    this.input = input;
}
public String getServerAddress () {
    return this.address;
}
@Override
public void run() {
    try {
        while(true) {
            Socket connect = new Socket(InetAddress.getByName(address), port);
            setConnect (connect);
            ObjectOutputStream output = new ObjectOutputStream(connect.getOutputStream());
            setOOS (output);
            ObjectInputStream input = new ObjectInputStream(connect.getInputStream());
            setOIS (input);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
public void sendMsg(String msg) {
    try {
        output.writeObject(connect.getPort() + ": " + msg);
        output.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

Запуск клиента:

Client c = new Client(Preferences.getTwinAddress(), 5678);
c.start();
//данный вызов не дает результат.               
c.sendMsg("CUSTOM MESSAGE");
READ ALSO
Правила парсинга json в Java

Правила парсинга json в Java

Должны ли названия полей класса и названия типов класса, к которому я парсю Json, полностью соответствовать названию полей, содержащихся в Json? И какие...

187
Настройка логирования GC

Настройка логирования GC

Сделал тестовый класс и запускаю его такой командой (java 8):

172
Вхождение выражения в строку

Вхождение выражения в строку

Необходимо найти все позиции вхождения шаблона в строкеШаблон выглядит как: "a?b", где '?' означает любой символ

193
Создание своих исключений Spring

Создание своих исключений Spring

Есть стандартное исключение в Spring - DuplicateKeyException

173