【发布时间】:2018-09-18 13:59:41
【问题描述】:
您好,我想编写一个简单的代码: 服务器和套接字
服务器 - 启动 套接字 - 想要连接 服务器 - 接受它
server - 等待来自套接字的命令 socket - 将命令写入流 服务器 - 想要响应流
ajsiodjasodasodsa 不行吗?!
这是连接到服务器的套接字
try (Socket socket = new Socket("localhost", 1234);) {
// get the outputstream to write a command to the server as soon as it is
// connected:
OutputStream outputStream = socket.getOutputStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
// this is the command
bufferedWriter.write("LISTPARTS");
bufferedWriter.flush();
// Now it should open a input stream to read the resonse of the server!
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
System.out.println("\nafter creating the reader");
String readLine;
while ((readLine = bufferedReader.readLine()) == null) {
System.out.println("what:" + readLine);
}
这是服务器:
while (true) {
try (ServerSocket server = new ServerSocket(1234);) {
System.out.println("wait for Client");
Socket socket = server.accept(); // wartet bis akzeptiert
System.out.println("Client was accepted");
// Open input stream because server waits for a command:
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
// wait for command
System.out.println("wait for command");
String readLine;
while ((readLine = bufferedReader.readLine()) == null) {
System.out.println("wait for client");
}
System.out.println("read line:" + readLine);
// here it should look if the command works ( this works fine )
if (readLine.equals("LISTPARTS")) {
System.out.println("Commando: listparts");
// for responding the server opens a writer to write the response!
OutputStream outputStream = socket.getOutputStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
// this method write onto the stream ( it should work normaly !)
circuit.dumpParts(bufferedWriter);
bufferedWriter.flush();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是控制台上服务器主要输出的结果:
Server- Main
wait for Client
Client was accepted
wait for command
以及套接字控制台的:
after creating the reader
【问题讨论】:
-
bufferedWriter.write("LISTPARTS\n");应该有帮助 -
请不要为您的问题添加答案,除非它们确实是答案。如果您有新信息要添加,只需编辑问题以包含更新和/或新信息(单击标签下方的编辑按钮)。如果您有新问题,请再问一个问题,如有必要,请参考此问题。
标签: java sockets server communication