package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class ChatServer { public static void main(String[] args) throws Exception { // 创建一个服务器 ServerSocket ss = new ServerSocket(9090); System.out.println("服务器已上线,等待客户端连接..."); Socket sk = ss.accept(); System.out.println("客户端已经连接"); Scanner mys = new Scanner(System.in); System.out.println("请输入您要发送的信息:"); String str = mys.next(); // 打开客户端字节流 OutputStream os = sk.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); bw.write(str); bw.newLine(); bw.flush(); // 打开读取的字节流 InputStream is = sk.getInputStream(); // 字节流转换为字符流量 InputStreamReader isr = new InputStreamReader(is); // 添加buffered BufferedReader br = new BufferedReader(isr); String sa = br.readLine(); System.out.println("客户端:"+sa); } }分析此代码
时间: 2024-03-23 08:41:24 浏览: 67
这是一个简单的聊天服务器的代码实现。下面是代码的分析:
1. 创建一个服务器
```java
ServerSocket ss = new ServerSocket(9090);
```
使用ServerSocket类创建一个服务器,并指定端口号为9090。
2. 等待客户端连接
```java
Socket sk = ss.accept();
```
使用ServerSocket的accept()方法,等待客户端连接。当客户端连接成功,accept()方法会返回一个Socket对象,该对象表示与客户端的连接。
3. 获取用户输入
```java
Scanner mys = new Scanner(System.in);
System.out.println("请输入您要发送的信息:");
String str = mys.next();
```
使用Scanner类获取用户输入的信息,可以通过控制台输入。这里只是简单地演示了如何获取用户输入。
4. 发送消息到客户端
```java
OutputStream os = sk.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(str);
bw.newLine();
bw.flush();
```
获取客户端的输出流,使用BufferedWriter类将消息写入输出流中,并使用flush()方法刷新流。
5. 接收客户端的消息
```java
InputStream is = sk.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String sa = br.readLine();
System.out.println("客户端:"+sa);
```
获取客户端的输入流,使用BufferedReader类读取输入流中的消息,并输出到控制台上。注意,这里使用了readLine()方法,它会一直阻塞等待客户端的输入,直到客户端输入了一行字符串并通过回车键结束输入。
阅读全文