【发布时间】:2016-09-15 14:21:08
【问题描述】:
我的客户端类应该从用户那里获取 10 个整数输入并将其发送到服务器。服务器应该接受这 10 个数字并对它们进行排序。然后它应该将数组发送回客户端,客户端应该打印它们。我的客户代码是:
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
int arr[]=new int[10];
int arrFromServer[]=new int[10];
BufferedReader inFromUser= new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost",6786);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
for(int i=0;i<10;i++)
arr[i]=Integer.parseInt(inFromUser.readLine());
for(int i=0;i<10;i++)
outToServer.writeInt(arr[i]);
for(int i=0;i<10;i++)
arrFromServer[i]=Integer.parseInt(inFromServer.readLine());
for (int i = 0; i < arrFromServer.length; i++) {
System.out.println("From Server::"+arrFromServer[i]);
}
clientSocket.close();
}
}
我的服务器代码是:
public class TCPServer {
public static void main(String[] args) throws IOException {
int arrFromClient[]=new int[10];
ServerSocket welcomeSocket = new ServerSocket(6786);
while(true){
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
for(int i=0;i<10;i++)
{
arrFromClient[i]=Integer.parseInt(inFromClient.readLine());
}
Arrays.sort(arrFromClient);
for (int i = 0; i < arrFromClient.length; i++) {
outToClient.writeInt(arrFromClient[i]);
}
}
}
}
当我尝试运行代码时,客户端继续接受数字,直到我手动终止程序。理想情况下,在输入 10 次后,它应该发送到服务器,服务器应该给出排序后的数组。
上面的代码有什么问题。任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
提示:write
Intvs. readLine。 -
我不明白 :( 我应该使用哪一个?我使用 readLine 读取用户的输入并使用 writeInt 将其写入服务器。这是错误的吗?
-
writeInt不写一行。这两种方法在 javadocs 中都有解释,我建议阅读它们。 -
我想写一个整数值。我正在使用 for 并将单个值传递给服务器。
-
您不能使用
readLine()来读取writeInt()所写的内容。
标签: java arrays sockets client-server serversocket