欢迎来到天天文库
浏览记录
ID:38983412
大小:209.00 KB
页数:11页
时间:2019-06-23
《Socket端到端的通信》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、客户端与客户端之间的通信系统设计与实现学号姓名__所在学院学科、专业__考试科目_考试日期__课程学时考试形式___________评语:客户端与客户端之间的通信系统设计与实现一.功能描述:在客户端/服务器/客户端模式中,基于Socket通信要实现信息共享,即服务器可以向其他多个客户端发送广播消息,客户端通过服务器也可以向其他客户端彼此收发送消息。类似于聊天室的那种功能,实现信息能在多个客户端之间共享。客户端服务器客户端客户端链接链接转发链接转发客户端先与服务器建立连接,服务器接收客户端的消息,再转发给其他的客户端,转发之前客户端都必须先与服务器建立连接才可以,每个客户端之间通过
2、服务器间接通信,从而实现客户端彼此间的通信。二.设计思路:客户端循环可以不停输入向服务器发送消息,并且启一个线程,专门用来监听服务器端发来的消息并打印输出。服务器端启动时,启动一个监听何时需要向客户端发送消息的线程。每次接受客户端连接请求,都启一个线程进行处理,并且将客户端信息存放到公共集合中。当客户端发送消息时,服务器端将消息顺序存入队列中,当需要输出时,从队列中取出广播到各客户端处。客户端输入showuser命令可以查看在线用户列表,查看到每个客户端名,输入bye向服务器端申请退出连接。创建服务端Socket,创建向客户端发送消息线程,监听客户端请求并处理。监听是否有输出消息
3、请求线程类,向客户端发送消息。将缓存在队列中的消息按顺序发送到各客户端,并从队列中清除。创建客户端,与服务器连接,并输入发送消息,用于监听服务器端向客户端发送消息线程。网络程序是建立在TCP/IP协议的基础上,致力于应用层,传输层向应用层提供了套接字Socket接口,Socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接以及进行数据传输。两个进程之间通信过程是从建立连接开始的,接着交换数据,到断开连接结束,套接字可看做是通信线路两端的收发器,进程通过套接字来收发数据。进程1SocketSoket进程2TCP连接套接字可以看做通信连接两端的收发器三
4、.代码行编辑,行注释:服务器端://创建服务端importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util.List;publicclassServerextendsServerSoc
5、ket{privatestaticfinalintSERVER_PORT=2014;//定义个端口号privatestaticbooleanisPrint=false;//是否输出消息标志privatestaticListuser_list=newArrayList();//登录用户集合privatestaticListthread_list=newArrayList();//服务器已启用线程集合privatestaticLinkedListmessage_list=newLinkedList
6、();//存放消息队列//创建服务端Socket,创建向客户端发送消息线程,监听客户端请求并处理publicServer()throwsIOException{super(SERVER_PORT);//创建ServerSocketnewPrintOutThread();//创建向客户端发送消息线程try{while(true){//监听客户端请求,启个线程处理Socketsocket=accept();//等待客户链接newServerThread(socket);//创建一个线程}}catch(Exceptione){}finally{close();}}//监听是否有输出消息
7、请求线程类,向客户端发送消息classPrintOutThreadextendsThread{publicPrintOutThread(){start();}publicvoidrun(){while(true){if(isPrint){//将缓存在队列中的消息按顺序发送到各客户端,并从队列中清除。Stringmessage=message_list.getFirst();for(ServerThreadthread:thread_list){thread.sendMessage
此文档下载收益归作者所有