网络通信之server/client通信的实现

本文展示了如何实现一个简单的TCP/IP通信系统,包括服务器端和客户端的Java代码。服务器端创建一个ServerSocket监听54321端口,接受客户端连接并发送'欢迎光临!'的欢迎消息。同时,它读取客户端的输入并转发给所有在线的客户端。客户端通过Socket连接服务器,启动两个线程分别用于接收服务器消息和发送用户输入。整个系统实现了多客户端与服务器的实时消息传递。
摘要由CSDN通过智能技术生成
要求:实现服务器客户端通信,当服务器启动后一旦有客户端连接上服务器,服务器便给连接上的客户端发送”欢迎光临!“。每增加一个客户端,服务器都将客户端放入arraylist中,并显示在线客户端数。而客户端向服务器发送消息时,服务器会接收客户端发来的消息并将消息转发给所以在线的客户端。客户端和服务器端都有自己的发送和接收数据的线程。 
服务端要求实现的功能: 
      1.每连上一个客户端,就主动给客户端发送一句“欢迎光临!”。 
      2.使用ArrayList存放连上服务端的所有客户端。 
      3.当接收到客户端发送来的消息的时候,将这条消息转发给所有连上服务端的所有客户端。 

思路: 
      1.创建一个服务器套接字(ServerSocket),绑定到指定端口。 
     2.调用accept方法,侦听来自客户端的请求,如果客户发出请求,则接受连接,返回通信套接字(Socket)。 
      3.创建线程来处理客户机:发送和接收消息。
 

服务端:下载
 

Java代码    收藏代码
  1. //服务器端  
  2. public class MyServer {  
  3.     //使用ArrayList存放连上服务端的所有客户端  
  4.     public static ArrayList<Socket> sockets = new ArrayList<Socket>();  
  5.     public static void main(String[] args) {  
  6.             try {  
  7.                 //创建一个服务器套接字,绑定到54321端口  
  8.                 ServerSocket server = new ServerSocket(54321);  
  9.                 System.out.println("服务器已启动,正在等待连接");  
  10.                 while (true) {  
  11.                     //调用accept方法,侦听来自客户端的请求  
  12.                     Socket socket = server.accept();  
  13.                     //将客户端发送过来的通信套接字添加到sockets动态数组中  
  14.                     sockets.add(socket);  
  15.                     //输出在线的客户端个数  
  16.                     System.out.println("有" + sockets.size() + "个客户连接上");  
  17.                     //启动发送线程,给客户端发送一句“欢迎光临!”  
  18.                     new getOutputStream(socket).start();  
  19.                     //启动接收线程,读取从客户端发来的消息  
  20.                     new getInputStream(socket).start();  
  21.                 }  
  22.             } catch (IOException e) {  
  23.                 e.printStackTrace();  
  24.             }  
  25.         }  
  26.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值