标题为什么说有bug呢,原因是此方法双向通信时只能一方发一句,对方才能接收到。如何改善请见下篇博客。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class TwoWaySocketServer {
public static void main(String[] args) {
System.out.println("服务端启动!监听端口8888。。。。");
try(ServerSocket serverSocket = new ServerSocket(8888);
//监听
Socket socket = serverSocket.accept();
//创建键盘输入对象
Scanner scanner = new Scanner(System.in);
//通过与客户端对应的Socket对象获取输入流对象
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//通过与客户端对应的Socket对象获取输出流对象
PrintWriter pw = new PrintWriter(socket.getOutputStream());){
while(true){
//读取客户端发送的消息
String str = br.readLine();
System.out.println("客户端说:"+str);
String keyInput = scanner.nextLine();
//发送到客户端
pw.println(keyInput);
pw.flush();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class TwoWaySocketClient {
public static void main(String[] args) {
try(Socket socket = new Socket("127.0.0.1", 8888);
//创建键盘输入对象
Scanner scanner = new Scanner(System.in);
//通过与服务端对应的Socket对象获取输入流对象
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//通过与服务端对应的Socket对象获取输出流对象
PrintWriter pw = new PrintWriter(socket.getOutputStream());){
while (true) {
//通过键盘输入获取信息
String keyInput = scanner.nextLine();
//向服务端发送消息
pw.println(keyInput);
pw.flush();
//接受服务端发送的消息
String input = br.readLine();
System.out.println("服务端说:" + input);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
可以拿去当你一句我一句的聊天软件^_^
文章讨论了Java中使用Socket进行双向通信时遇到的问题,即双方只能交替发送一条消息。为解决这个问题,作者提出在后续博客中会分享解决方案。
1240

被折叠的 条评论
为什么被折叠?



