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-04-01 08:36:42 浏览: 107
这是一个基于Java的简单的聊天服务器程序,代码主要实现了以下功能:
1. 创建服务器:创建一个ServerSocket对象,将其绑定到指定的端口上,等待客户端的连接请求。
2. 等待客户端连接:使用accept()方法等待客户端的连接请求,当客户端连接上来时,程序继续执行。
3. 发送信息:使用OutputStream、OutputStreamWriter和BufferedWriter对象将信息发送给客户端。
4. 接收信息:使用InputStream、InputStreamReader和BufferedReader对象接收客户端发送的信息。
5. 输出信息:将接收到的信息输出到控制台上。
需要注意的是,这个程序中只能实现单向通信,即服务器只能发送信息给客户端,而不能接收来自客户端的信息。如果需要实现双向通信,需要在程序中添加相应的代码。
相关问题
ChatClient.java程序: 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.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class ChatClient { Public static void main(String[] args) throws UnknownHostException IOException { Socketsk=newSocket(InetAddress.getByName("127.0.0.1"),9090); //打开读取的字节流 InputStream is = sk.getInputStream(); //字节流转换为字符流量 InputStreamReader isr=new InputStreamReader(is); //添加buffered BufferedReader br=new BufferedReader(isr); String str = br.readLine(); System.out.println("服务器:"+str); //定义一个输入器 Scanner mys=new Scanner(System.in); System.out.println("请输入您要发送的内容:"); String sa=mys.next(); OutputStream os = sk.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(os); BufferedWriter bw = new BufferedWriter(osw); bw.write(sa); bw.newLine(); bw.flush(); } }
这段代码是一个简单的聊天客户端程序,它会连接到本地IP地址为127.0.0.1,端口号为9090的服务端程序,并发送一条消息。具体来说,它的执行过程如下:
1. 创建一个Socket对象,指定要连接的服务端的IP地址和端口号;
2. 通过Socket对象获取输入流,然后将字节流转换为字符流,再添加缓冲区,最后读取服务端发送过来的一行消息;
3. 创建一个Scanner对象,让用户输入要发送的消息;
4. 通过Socket对象获取输出流,然后将字符流转换为字节流,再添加缓冲区,最后将用户输入的消息发送给服务端。
需要注意的是,这段代码只是一个简单的示例,实际上在真正的聊天应用中还需要考虑很多其他的因素,如多个客户端同时连接、消息的序列化和反序列化、消息的广播等等。
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); } }
这是一个简单的 Java 程序,实现了一个基本的聊天服务器。程序首先创建了一个 ServerSocket 对象,并将其绑定到端口 9090。然后程序等待客户端的连接,一旦有客户端连接,程序就会打印出相应的信息。接着程序会让用户输入要发送的信息,并将其发送到客户端。程序也会从客户端读取信息,并打印出来。其中使用了 Java 的输入输出流和网络编程相关类。
阅读全文