сокет Java-сервера - PullRequest
       1

сокет Java-сервера

0 голосов
/ 18 февраля 2012

Я хотел создать сервер Java и клиента в одном файле ... потому что это моя структура проекта

SERVER ---> CLIENT / SERVER ----> CLIENT

кодирование для части SERVER и CLIENT довольно простое, но у меня возникла проблема при создании для части CLIENT / SERVER. Где мой код может запускать только часть CLIENT и не запускать часть SERVER.из-за моего потока run () code.

package com.main.datadistributor;

    import java.io.IOException;
    import java.net.ServerSocket;

    public class Slave {
        public static void main(String args[]) throws IOException{
        Config cfg = new Config("Slave");
        String MasterServerIP = cfg.getProperty("MasterServerIP");
        String MasterServerPort = cfg.getProperty("MasterServerPort");
        String SlaveServerPort = cfg.getProperty("SlaveServerPort");

        Client client = new Client(MasterServerIP,Integer.parseInt(MasterServerPort),"SLAVEONE");
        client.run();

        int numClient = 0;
        ServerSocket listener = new ServerSocket(Integer.parseInt(SlaveServerPort));
        System.out.println("Server starts running");

        try{
            while(true){
                new Server(listener.accept(), numClient++, Integer.parseInt(SlaveServerPort), "SLAVESERVER").start();
            }
        } finally {
            listener.close();
        }


    }
}

из приведенного выше кода у меня есть проблема только при выполнении client.run (), и код просто останавливается без продолжения выполнения нового сервера ниже в разделе try

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012

Если Client подклассы Thread, то вам нужно позвонить start(), а не run().Если он реализует Runnable, то вам нужно создать экземпляр Thread для его выполнения и вызвать метод start() потока.

1 голос
/ 18 февраля 2012

Не зная, что такое Client, или видя его код, мы не можем помочь. Если у него есть метод run(), он может реализовать Runnable, так что вы можете просто вызвать new Thread(client).start() вместо прямого вызова метода run.

...