Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions src/main/java/com/examplehub/basics/network/SocketClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,29 +8,26 @@
public class SocketClient {
public static void main(String[] args) throws IOException {
Socket clientSocket = new Socket("127.0.0.1", 6666);
try (InputStream inputStream = clientSocket.getInputStream()) {
try (OutputStream outputStream = clientSocket.getOutputStream()) {
handle(inputStream, outputStream);
}
try (InputStream inputStream = clientSocket.getInputStream(); OutputStream outputStream = clientSocket.getOutputStream()) {
handle(inputStream, outputStream);
}
clientSocket.close();
System.out.println("disconnected.");
}

private static void handle(InputStream inputStream, OutputStream outputStream)
throws IOException {
throws IOException {
var writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
var reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
Scanner scanner = new Scanner(System.in);
System.out.println("[server] " + reader.readLine());
for (; ; ) {
System.out.print(">>> "); // 打印提示
String s = scanner.nextLine(); // 读取一行输入
System.out.print(">>> ");
String s = scanner.nextLine();
writer.write(s + System.lineSeparator());
// writer.newLine();
writer.flush();
String resp = reader.readLine();
System.out.println("<<< " + resp);
System.out.println("[server]: " + resp);
if (resp.equals("bye")) {
break;
}
Expand Down
24 changes: 15 additions & 9 deletions src/main/java/com/examplehub/basics/network/SocketServer.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,30 @@
package com.examplehub.basics.network;

import com.examplehub.strings.ReverseString;
import com.examplehub.utils.StringUtils;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;

public class SocketServer {
static class ServerHandler implements Runnable {
private Socket socket;
private final Socket socket;

public ServerHandler(Socket socket) {
this.socket = socket;
}

public void run() {
try (InputStream inputStream = this.socket.getInputStream()) {
try (OutputStream outputStream = this.socket.getOutputStream()) {
handle(inputStream, outputStream);
}
try (InputStream inputStream = this.socket.getInputStream();
OutputStream outputStream = this.socket.getOutputStream()) {
handle(inputStream, outputStream);
} catch (Exception e) {
try {
this.socket.close();
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println("client disconnect");
}
Expand All @@ -30,24 +33,27 @@ public void run() {
private void handle(InputStream inputStream, OutputStream outputStream) throws IOException {
var reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
var writer = new BufferedWriter(new OutputStreamWriter(outputStream, StandardCharsets.UTF_8));
writer.write("hello!\n");
writer.write("welcome connect service!\n");
writer.flush();
while (true) {
String line = reader.readLine();
System.out.println("[client]: " + line);
if (line.equals("bye")) {
writer.write("bye\n");
writer.flush();
break;
}
writer.write("ok: " + line + "\n");
writer.write("ok: " + ReverseString.reverse(line) + "\n");
writer.flush();
}
}
}

public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(6666);
System.out.println("server is started!");
int port = 6666;
ServerSocket serverSocket = new ServerSocket(port);
System.out.print("server is started! listen on: ");
System.err.print(port);
while (true) {
Socket socket = serverSocket.accept();
System.out.println("connected from " + socket.getRemoteSocketAddress());
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/com/examplehub/basics/network/UDPClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.examplehub.basics.network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.nio.charset.StandardCharsets;

public class UDPClient {
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket();
byte[] buffer = "123".getBytes(StandardCharsets.UTF_8);
DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length, InetAddress.getLocalHost(), 6666);
datagramSocket.send(datagramPacket);

byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
datagramSocket.receive(dp);
System.out.println("[server]: " + new String(bytes, 0, dp.getLength()));
}
}
27 changes: 27 additions & 0 deletions src/main/java/com/examplehub/basics/network/UDPServer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.examplehub.basics.network;

import com.examplehub.strings.ReverseString;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.nio.charset.StandardCharsets;

public class UDPServer {
public static void main(String[] args) throws IOException {
int port = 6666;
try(DatagramSocket datagramSocket = new DatagramSocket(port)) {
System.out.println("server started! listen on: " + port);
byte[] buffer = new byte[1024];
DatagramPacket datagramPacket = new DatagramPacket(buffer, buffer.length);
datagramSocket.receive(datagramPacket);
System.out.println("[client]: " + new String(buffer, 0, datagramPacket.getLength()));

byte[] bytes = ReverseString.reverse(new String(buffer, 0, datagramPacket.getLength()))
.getBytes(StandardCharsets.UTF_8);
System.out.println(new String(bytes));
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, datagramPacket.getAddress(), datagramPacket.getPort());
datagramSocket.send(dp);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,93 @@

import org.junit.jupiter.api.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

class User {
private String username;
private int age;

public User() {
}

public User(String username, int age) {
this.username = username;
this.age = age;
}

public void setAge(int age) {
this.age = age;
}

public void setUsername(String username) {
this.username = username;
}

@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", age=" + age +
'}';
}
}
class CreateObjFromClassTest {
@Test
void testCreateObj() throws InstantiationException, IllegalAccessException {
Class cls = String.class;
String str = (String) cls.newInstance();
void testCreateObjUsingNewInstance() throws InstantiationException, IllegalAccessException {
Class<String> cls = String.class;
String str = cls.newInstance();
assertTrue(str.isEmpty());
}

@Test
void testCreateCustomObject() throws InstantiationException, IllegalAccessException, ClassNotFoundException {

Class<?> userClass = User.class;
User user = (User) userClass.newInstance();
user.setUsername("admin");
user.setAge(25);
assertEquals("User{username='admin', age=25}", user.toString());
}

@Test
void testCreateCustomObjectUsingConstructor() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
Class<?> userClass = Class.forName("com.examplehub.basics.reflection.User");
Constructor<?> constructor = userClass.getConstructor();
assertEquals("public com.examplehub.basics.reflection.User()", constructor.toString());
User user = (User) constructor.newInstance();
user.setUsername("duyuanchao");
user.setAge(25);
assertEquals("User{username='duyuanchao', age=25}", user.toString());
}

@Test
void testCreateCustomObjectUsingConstructorWithArgs() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
Class<?> userClass = Class.forName("com.examplehub.basics.reflection.User");
Constructor<?> constructor = userClass.getConstructor(String.class, int.class);
assertEquals("public com.examplehub.basics.reflection.User(java.lang.String,int)", constructor.toString());
User user = (User) constructor.newInstance("duyuanchao", 26);
assertEquals("User{username='duyuanchao', age=26}", user.toString());
}

@Test
void testGetAllConstructors() throws ClassNotFoundException {
Class<?> userClass = Class.forName("com.examplehub.basics.reflection.User");
Constructor<?>[] constructors = userClass.getConstructors();
for (Constructor<?> constructor : constructors) {
assertEquals(1, constructor.getModifiers());
assertEquals("com.examplehub.basics.reflection.User", constructor.getName());
Class<?>[] classes = constructor.getParameterTypes();
int count = 0;
for (Class<?> cls : classes) {
if (count == 0) {
assertEquals("java.lang.String", cls.getName());
}
if (count == 1) {
assertEquals("int", cls.getName());
}
count++;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,48 @@

import org.junit.jupiter.api.Test;

import java.time.Month;

class GetClassExampleTest {

@Test
void testVoid() {
Class<Void> c = void.class;
assertEquals("void", c.getName());
assertEquals("void", c.getSimpleName());
assertEquals("java.lang", c.getPackageName());
assertEquals("void", c.toString());
}

@Test
void testGetClass() throws ClassNotFoundException {
Class cls = String.class;
Class cls2 = "hello".getClass();
Class cls3 = Class.forName("java.lang.String");
assertTrue(cls == cls2 && cls == cls3);
Class<String> cls = String.class;
Class<?> cls2 = "hello".getClass();
Class<?> cls3 = Class.forName("java.lang.String");
assertSame(cls, cls2);
assertSame(cls, cls3);
}

@Test
void testGetClassByTYPE() {
Class<?> c = Integer.TYPE;
assertEquals("int", c.getName());
assertEquals("int", c.getSimpleName());
assertEquals("java.lang", c.getPackageName());
assertEquals("int", c.toString());
assertTrue(c.isPrimitive());
}

@Test
void testGetClassByClassloader() throws ClassNotFoundException {
ClassLoader classLoader = GetClassExample.class.getClassLoader();
Class<?> cls = classLoader.loadClass("java.lang.String");
assertEquals("java.lang.String", cls.getName());
}

@Test
void testStringClass() {
Class cls = "".getClass();
Class<?> cls = "".getClass();
assertEquals("java.lang.String", cls.getName());
assertEquals("String", cls.getSimpleName());
assertEquals("java.lang", cls.getPackageName());
Expand All @@ -27,7 +57,7 @@ void testStringClass() {

@Test
void testInterface() {
Class cls = Runnable.class;
Class<Runnable> cls = Runnable.class;
assertEquals("java.lang.Runnable", cls.getName());
assertEquals("Runnable", cls.getSimpleName());
assertEquals("java.lang", cls.getPackageName());
Expand All @@ -39,7 +69,7 @@ void testInterface() {

@Test
void testMonth() {
Class cls = java.time.Month.class;
Class<Month> cls = java.time.Month.class;
assertEquals("java.time.Month", cls.getName());
assertEquals("Month", cls.getSimpleName());
assertEquals("java.time", cls.getPackageName());
Expand All @@ -51,7 +81,7 @@ void testMonth() {

@Test
void testStringArray() {
Class cls = String[].class;
Class<String[]> cls = String[].class;
assertEquals("[Ljava.lang.String;", cls.getName());
assertEquals("String[]", cls.getSimpleName());
assertEquals("java.lang", cls.getPackageName());
Expand All @@ -63,7 +93,7 @@ void testStringArray() {

@Test
void testPrimitive() {
Class cls = int.class;
Class<?> cls = int.class;
assertEquals("int", cls.getName());
assertEquals("int", cls.getSimpleName());
assertEquals("java.lang", cls.getPackageName());
Expand Down
Loading