Skip to content

Commit 19363ec

Browse files
update socket (#183)
1 parent 2d71c32 commit 19363ec

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.examplehub.basics.network;
2+
3+
import java.io.*;
4+
import java.net.Socket;
5+
import java.nio.charset.StandardCharsets;
6+
import java.util.Scanner;
7+
8+
public class SocketClient {
9+
public static void main(String[] args) throws IOException {
10+
Socket clientSocket = new Socket("127.0.0.1", 6666);
11+
try (InputStream inputStream = clientSocket.getInputStream()) {
12+
try (OutputStream outputStream = clientSocket.getOutputStream()) {
13+
handle(inputStream, outputStream);
14+
}
15+
}
16+
clientSocket.close();
17+
System.out.println("disconnected.");
18+
}
19+
private static void handle(InputStream inputStream, OutputStream outputStream) throws IOException {
20+
var writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
21+
var reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
22+
Scanner scanner = new Scanner(System.in);
23+
System.out.println("[server] " + reader.readLine());
24+
for (;;) {
25+
System.out.print(">>> "); // 打印提示
26+
String s = scanner.nextLine(); // 读取一行输入
27+
writer.write(s + System.lineSeparator());
28+
// writer.newLine();
29+
writer.flush();
30+
String resp = reader.readLine();
31+
System.out.println("<<< " + resp);
32+
if (resp.equals("bye")) {
33+
break;
34+
}
35+
}
36+
}
37+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package com.examplehub.basics.network;
2+
3+
import java.io.*;
4+
import java.net.ServerSocket;
5+
import java.net.Socket;
6+
import java.nio.charset.StandardCharsets;
7+
8+
public class SocketServer {
9+
static class ServerHandler implements Runnable {
10+
private Socket socket;
11+
12+
public ServerHandler(Socket socket) {
13+
this.socket = socket;
14+
}
15+
public void run() {
16+
try (InputStream inputStream = this.socket.getInputStream()) {
17+
try(OutputStream outputStream = this.socket.getOutputStream()) {
18+
handle(inputStream, outputStream);
19+
}
20+
} catch (Exception e) {
21+
try {
22+
this.socket.close();
23+
} catch (IOException ex) {
24+
}
25+
System.out.println("client disconnect");
26+
}
27+
}
28+
29+
private void handle(InputStream inputStream, OutputStream outputStream) throws IOException {
30+
var reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
31+
var writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
32+
writer.write("hello!\n");
33+
writer.flush();
34+
while (true) {
35+
String line = reader.readLine();
36+
if (line.equals("bye")) {
37+
writer.write("bye\n");
38+
writer.flush();
39+
break;
40+
}
41+
writer.write("ok: " + line + "\n");
42+
writer.flush();
43+
}
44+
}
45+
}
46+
47+
public static void main(String[] args) throws IOException {
48+
ServerSocket serverSocket = new ServerSocket(6666);
49+
System.out.println("server is started!");
50+
while (true) {
51+
Socket socket = serverSocket.accept();
52+
System.out.println("connected from " + socket.getRemoteSocketAddress());
53+
new Thread(new ServerHandler(socket)).start();
54+
}
55+
//TODO
56+
}
57+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.examplehub.basics.network;
2+
3+
class SocketServerTest {
4+
//TODO
5+
}

0 commit comments

Comments
 (0)