如果我的消息在同一侧重复,而不是在另一侧(客户端/服务器)发送或接收,我的代码有什么问题?我在同一台机器或本地主机上同时使用客户端和服务器端。
我使用了处于等待状态的端口,现在我不知道为什么它不工作。
请忽略以下几行,因为堆栈溢出迫使我添加更多细节,我从字面上描述了一切。
s s jsd jvjdbvjkdsvbjkdsvbbbbbbbbbbbbbbbbbbbbbbbbbbbbkjvbkjsdbvkjbvkjbdvksvjbsvbjdkvjksdvjbvhsdvsbdvjksdbvjksbvjkdsbvjsbvsjbvsdv d v vm vjsdsjvbjsdbjsbnkwdwiotiqwtoqw6736g3 fn enkdlvdsv
uifuhywetyutef e77y32uijwf bewuifuwfbjewkbfkwbjweyiu beguieguibvkjbevkehvuiev hujnjnnn)
这是我的服务器端代码:
import java.net.*;
import java.io.*;
import static java.lang.System.out;
public class Server {
ServerSocket server;
Socket socket;
BufferedReader b;
PrintWriter p;
public Server() {
try {
server = new ServerSocket("my port no.");
System.out.println("bdwdhwbdh");
System.out.println("Server is ready...send connection request...");
socket = server.accept();
b = new BufferedReader(new InputStreamReader(socket.getInputStream()));
p = new PrintWriter(socket.getOutputStream());
startReading();
startWriting();
} catch (Exception e) {
e.printStackTrace();
}
}
public void startReading() {
Runnable r = () -> {
System.out.println("reader started");
String container;
while (true) {
try {
container = b.readLine();
if (container.equals("overandout")) {
System.out.println("client terminated the session...");
break;
}
System.out.println("client : " + container);
}
catch (IOException e) {
e.printStackTrace();
}
}
};
new Thread(r).start();
}
public void startWriting() {
Runnable w = () -> {
System.out.println("writer started...");
while (true) {
try {
BufferedReader w1 = new BufferedReader(new InputStreamReader(System.in));
String container = w1.readLine();
out.println(container);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
};
new Thread(w).start();
}
public static void main(String[] args) throws IOException {
System.out.println("server started...");
new Server();
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
this is my client side code:
import java.io.BufferedReader;
import java.net.*;
import java.io.*;
import static java.lang.System.out;
public class Client {
Socket s;
BufferedReader b;
PrintWriter p;
public Client() {
try {
System.out.println("sending request to the server...");
s = new Socket("my local ip address", "my port no");
System.out.println("connection done");
b = new BufferedReader(new InputStreamReader(s.getInputStream()));
p = new PrintWriter(s.getOutputStream());
startReading();
startWriting();
} catch (Exception e) {
e.printStackTrace();
}
}
public void startReading() {
Runnable r = () -> {
System.out.println("reader started");
String container;
while (true) {
try {
container = b.readLine();
if (container.equals("overandout")) {
System.out.println("server terminated the session...");
break;
}
System.out.println("server : " + container);
}
catch (IOException e) {
e.printStackTrace();
}
}
};
new Thread(r).start();
}
public void startWriting() {
Runnable w = () -> {
System.out.println("writer started...");
while (true) {
try {
BufferedReader w1 = new BufferedReader(new InputStreamReader(System.in));
String container = w1.readLine();
out.println(container);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
};
new Thread(w).start();
}
public static void main(String[] args) {
new Client();
}
}
}