🌟服务端
1、通过serversoket注册端口
2、服务端调用accpect方法用于监听客户端的socket请求
3、从socket中获取字节输入或输出流进行数据的读写操作
🌟客户端
1、通过socket对象与服务端连接
2、从socket中得到字节输入或者输出流进行读写操作

服务端
//服务端
public static void main(String[] args) {
try {
//定义ServerSocket进行端口注册
ServerSocket socket = new ServerSocket(8686);
//监听客户端的Socket请求
Socket st = socket.accept();
//获取Socket请求中的字节输入流对象
InputStream is = st.getInputStream();
//把字节输入流包装成缓冲字符输入流
BufferedReader bfr = new BufferedReader(new InputStreamReader(is));
String msg;
if ((msg = bfr.readLine())!=null){
System.out.println("服务端接收到的信息"+ msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
客户端
//客户端
public static void main(String[] args) {
try {
//创建Socket对象请求服务器连接
Socket socket = new Socket("127.0.0.1",8686);
//从Socket中获取字节流
OutputStream os = socket.getOutputStream();
//把字节输出流包装成一个打印流
PrintStream ps = new PrintStream(os);
ps.println("hello word!!! ");
ps.close();
} catch (IOException e) {
e.printStackTrace();
}
}
思想:通过while函数实现客户端一直发送消息往服务端,服务端一直接接收消息并输出,实现多发和多收的机制
客户端
//客户端
public static void main(String[] args) {
try {
//创建Socket对象请求服务器连接
Socket socket = new Socket("127.0.0.1",8686);
//从Socket中获取字节流
OutputStream os = socket.getOutputStream();
//把字节输出流包装成一个打印流
PrintStream ps = new PrintStream(os);
Scanner sc = new Scanner(System.in);
while (true){
System.out.print("请说");
String msg = sc.nextLine();
ps.println(msg);
ps.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
服务端
//服务端
public static void main(String[] args) {
try {
//定义ServerSocket进行端口注册
ServerSocket socket = new ServerSocket(8686);
//监听客户端的Socket请求
Socket st = socket.accept();
//获取Socket请求中的字节输入流对象
InputStream is = st.getInputStream();
//把字节输入流包装成缓冲字符输入流
BufferedReader bfr = new BufferedReader(new InputStreamReader(is));
String msg;
while ((msg = bfr.readLine())!=null){
System.out.println("服务端接收到的信息"+ msg);
}
} catch (IOException e) {
e.printStackTrace();
}
}
实现了客户端每发一条消息,服务端就即使接收并打印出来
服务端 | 客户端