要求:实现服务器客户端通信,当服务器启动后一旦有客户端连接上服务器,服务器便给连接上的客户端发送”欢迎光临!“。每增加一个客户端,服务器都将客户端放入arraylist中,并显示在线客户端数。而客户端向服务器发送消息时,服务器会接收客户端发来的消息并将消息转发给所以在线的客户端。客户端和服务器端都有自己的发送和接收数据的线程。
服务端要求实现的功能:
1.每连上一个客户端,就主动给客户端发送一句“欢迎光临!”。
2.使用ArrayList存放连上服务端的所有客户端。
3.当接收到客户端发送来的消息的时候,将这条消息转发给所有连上服务端的所有客户端。
思路:
1.创建一个服务器套接字(ServerSocket),绑定到指定端口。
2.调用accept方法,侦听来自客户端的请求,如果客户发出请求,则接受连接,返回通信套接字(Socket)。
3.创建线程来处理客户机:发送和接收消息。
服务端:下载
服务端要求实现的功能:
1.每连上一个客户端,就主动给客户端发送一句“欢迎光临!”。
2.使用ArrayList存放连上服务端的所有客户端。
3.当接收到客户端发送来的消息的时候,将这条消息转发给所有连上服务端的所有客户端。
思路:
1.创建一个服务器套接字(ServerSocket),绑定到指定端口。
2.调用accept方法,侦听来自客户端的请求,如果客户发出请求,则接受连接,返回通信套接字(Socket)。
3.创建线程来处理客户机:发送和接收消息。
服务端:下载
- //服务器端
- public class MyServer {
- //使用ArrayList存放连上服务端的所有客户端
- public static ArrayList<Socket> sockets = new ArrayList<Socket>();
- public static void main(String[] args) {
- try {
- //创建一个服务器套接字,绑定到54321端口
- ServerSocket server = new ServerSocket(54321);
- System.out.println("服务器已启动,正在等待连接");
- while (true) {
- //调用accept方法,侦听来自客户端的请求
- Socket socket = server.accept();
- //将客户端发送过来的通信套接字添加到sockets动态数组中
- sockets.add(socket);
- //输出在线的客户端个数
- System.out.println("有" + sockets.size() + "个客户连接上");
- //启动发送线程,给客户端发送一句“欢迎光临!”
- new getOutputStream(socket).start();
- //启动接收线程,读取从客户端发来的消息
- new getInputStream(socket).start();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }