-2

我正在尝试通过打开的套接字连接发送 String[] ,但它不起作用。我去从数据库发送一个数组并在套接字连接后在客户端发送结果集!

服务器

public class ServerConnectionHandler implements Runnable {

private static String String;
private Socket clientSocket;

public ServerConnectionHandler(Socket clientSocket) {
    this.clientSocket = clientSocket;
}

public String[] toStringArray(ResultSet resultSet, String columnLabel) {
    LinkedList<String> resultList = new LinkedList<String>();
 
    try {
        while (resultSet.next()) {
            resultList.add(resultSet.getString(columnLabel));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
 
    return resultList.toArray(new String[0]);
}
    
@Override
public void run() {

    
    

    ResultSet val = null;
    System.out.println("Client " + clientSocket.getInetAddress() + ":" + clientSocket.getPort() + " has connected.");
    Mysql conn = new Mysql("****", "root", "","*****");
    val = conn.executeSelect(CONSTANT.QUERY_ALL);
    String[] mybytearray = toStringArray(val,"real_url");
    
    try {
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        
        String inputline, outputline;
        outputline = "Connected to server...type in the console to interact!";
        out.println(outputline);
        
        
        while((inputline = in.readLine()) != null){
            outputline = "Server echoes: " + mybytearray;
            out.println(outputline);
        }
    }
    
    catch(Exception e) {
        System.out.println("Client " + clientSocket.getInetAddress() + ":" + clientSocket.getPort() + " has disconnected.");
    }
    
}

}

客户

public class ClientMain {

private String host;
private int port;

public ClientMain(String host, int port) {
    this.host = host;
    this.port = port;
}

public void start() {
    try {
        Socket clientSocket = new Socket(host, port);
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        
        String inputline, outputline;
            while((inputline = in.readLine()) != null){
                System.out.println(inputline);
                outputline = getUserInput();
                out.println(outputline);
                
            }
    } 
    
    catch (Exception e) {
        System.out.println("Server not running, shutting down...");
        System.exit(-1);
    } 
}

private static String getUserInput() {
    String s = "";
    InputStreamReader isr; 
    BufferedReader br;
    try {
        isr = new InputStreamReader(System.in);
        br = new BufferedReader(isr);
        s += br.readLine();
        
    }
    catch(IOException e){
        e.printStackTrace();
        System.exit(-1);
    }

    return s;
}

}

4

1 回答 1

0

除了整体有缺陷的设计之外,我很确定这条线是非常错误的:

outputline = "Server echoes: " + mybytearray;

您正在将字符串“服务器回显:”与数组连接起来。你不能这样做。

相反,试试这个:

outputline = "Server echoes: ";
for (String s : mybytearray) {
    outputline += s;
}

但是你到底为什么要调用 String 数组mybytearray呢?

作为职业建议,请考虑使用每个现代 Java IDE 中提供的调试器工具。

于 2012-06-13T17:04:16.560 回答