需要一点帮助..创建一个项目客户端 - 服务器,使其能够处理文件。一切正常,我应该从客户端获取消息。不知道为什么我没有得到它。
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();
}
}
}
告诉我我做错了什么! :)