这篇文章给大家介绍Java Socket服务器关键代码配置的实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
Java Socket服务器在很多人使用的时候会出现或多或少的问题,其实在关键代码中有不少的问题需要我们处理,下面我们就看看如何才能更好的使用Java Socket服务器的相关代码。
Procedure2相比procedure1加入了多线程的部分,一个线程负责专门去接受消息,另一个负责发送消息。当服务器端负责接收的线程因为readUTF()被阻塞不能发送消息时,负责发送消息的线程让服务器端也能发送消息。同样的原理,客户端也如此。
服务器端加入的关键代码如下:
class ServerReadThread extends Thread{ private DataInputStream dis; public ServerReadThread(DataInputStream dis){ this.dis = dis; } public void run(){ String info; try{ while(true){ info = dis.readUTF(); System.out.println("客户端说:" + info); if(info.equals("goodbye")){ System.out.println("客户端拜拜了!"); System.exit(0); } } }catch(IOException e){ e.printStackTrace(); } } } class ServerWriteThread extends Thread{ private DataOutputStream dos; private BufferedReader br; public ServerWriteThread(DataOutputStream dos,BufferedReader br){ this.dos = dos; this.br = br; } public void run(){ String info; try{ while(true){ info = br.readLine(); dos.writeUTF(info); if(info.equals("bye")){ System.exit(0); } } }catch(IOException e){ e.printStackTrace(); } } }
负责接受的类ServerReadThread继承Thread,并构造一个DataInputStream对象参数的构造函数,接收对方信息。负责发送的类ServerWriteThread继承Thread,并构造一个DataInputStream对象和BufferedRead对象的双参数的构造函数,负责发送消息。new ServerReadThread(dis).start();new ServerWriteThread(dos,br).start();开启两个线程。客户端原理与服务器端类似,就不做更详细的讲解。
思考:procedure2相比procedure1已经实现了多线程聊天,虽只是运行在控制台上,但麻雀虽小,五脏俱全,这已经体现出了java Socket编程以及多线程的核心思想,此课程设计的目的已经达到。Java Socket服务器为实现更加人性化的效果,我引入javaGUI的组件awt,与之相关的技术也就随之引入了,比如基于事件的驱动,还有awt各个组件之间的调用。与此同时,代码的分布和组织结构都要做相应的调整。
关于Java Socket服务器关键代码配置的实例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。