我有一个使用PrintWriter发送字符串数组的Client类,然后Server类应该能够接收这些值,但我无法从字符串数组中读取解决方案。
客户端类:
public Client(String[] data) throws IOException {
connectToServer();
out.println(data);
}
public void connectToServer() throws IOException {
String serverAddress = "localhost";
Socket socket = new Socket(serverAddress,9898);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
}
服务器类: (这是服务器读取客户端发送的任何内容的方法)
public void run(){
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
//this is my problem: i can't read the value from the array using this code
while(true){
String input = in.readLine();
if(input == null) break;
}
答案 0 :(得分:0)
你在这里遇到了问题:
public Client(String[] data) throws IOException {
connectToServer();
out.println(data);
}
这将通过套接字发送无意义数据,即String数组的toString()
表示,如果客户端发送废话,服务器将只读取相同内容。而是使用for循环将数据作为单独的字符串发送。
public Client(String[] data) throws IOException {
connectToServer();
for (String line : data) {
out.println(line + "\n");
}
}
或者我认为您可以使用ObjectOutputStream然后只发送整个数组,但不管怎样,不要做你最初做的事情。