客户端 - 服务器,无法弄清楚如何使多客户端将字符串发送到一台服务器

时间:2017-07-25 11:28:00

标签: java server client

需要一点帮助..创建一个项目客户端 - 服务器,使其能够处理文件。一切正常,我应该从客户端获取消息。不知道为什么我没有得到它。

package server;

import java.io.FileNotFoundException;

import java.io.IOException;

import org.json.simple.parser.ParseException;

public class Server {

public static void main(String[] args) throws FileNotFoundException, IOException, ParseException, ClassNotFoundException {
    new Config();
    new ClientComm();
    while(true){

        ClientComm.getLineAndTypeFromClient();

    }
    System.out.println(ClientComm.ois.available());
}
}

Client.java:

package client;

public class Client {


    public static void main(String arg[]) throws Exception{

        new Config();
        new ServerComm();
        if(ServerComm.sendAuth() == true) {
            System.out.println("Client connected to server : " + ServerComm.getSocket().isConnected());
            new FileProcessing();
        }

    }
}

ServerComm.java:从客户端向服务器发送信息。

package client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ServerComm{

    private static Socket socket;
    private static ObjectOutputStream oos;


    public ServerComm() throws UnknownHostException, IOException {

        socket = new Socket(Config.getHost(), Config.getPort());
        oos = new ObjectOutputStream(socket.getOutputStream());

    }

    protected static void sendLine(String line, String type) throws IOException{

        String[] a = {line,type};
        oos.writeUnshared(a);
        oos.flush();
        System.out.println(oos);
        oos.reset();
    }

    protected static Socket getSocket() {
        return socket;
    }

    @SuppressWarnings("resource")
    protected static boolean sendAuth() throws IOException {

        String project_id = Config.getProject_id();
        String user_id = Config.getUser_id();

        String[] auths = {project_id, user_id};
        oos.writeUnshared(auths);
        oos.flush();
        oos.reset();
        System.out.println(oos);
        return true;

    }   

}

ClientComm.java:从客户端接收信息。

package server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;


public class ClientComm{

    private static Socket client;
    private static ServerSocket server;
    public static ObjectInputStream ois;

    public ClientComm() throws ClassNotFoundException {
        try {
            server = new ServerSocket(Config.getPort());
            System.out.println("Server started");

            while (true)
            {
                client = server.accept();
                checkAuth();
                System.out.println("New Connection");

            }

        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    protected static void getLineAndTypeFromClient() throws IOException, ClassNotFoundException {

        String[] variables = (String[]) ois.readObject();
        for(String variable : variables) {
            System.out.println(variable);
        }
        ois.reset();
    }

    private void checkAuth() throws IOException, ClassNotFoundException {
        ArrayList<String> auths = new ArrayList<String>();
        ois = new ObjectInputStream(client.getInputStream());
        String[] authArray = (String[]) ois.readObject();
        for(String auth : authArray) {
            auths.add(auth);
        }
        int temp = 0;
        for(int i = 0 ; i < auths.size() ; i++) {

            if(Config.getProjectId().equals(auths.get(i)) || Config.getUserId().equals(auths.get(i)) ){
                temp += 1;
            }
            else {
                temp -= 1;
            }

        }
        if(temp == auths.size()) {
            temp = 0;
        }
        else {
            System.out.println("Auth failed");
            temp = 0;
            client.close();
        }




    }

}

告诉我我做错了什么! :)

0 个答案:

没有答案