- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Socket端到端的通信
客户端与客户端之间的通信系统设计与实现
学号
姓名_ _
所在学院
学科、专业_ _
考试科目 _
考试日期 _ _
课程学时
考 试 形 式 _____ ______
评语:
客户端与客户端之间的通信系统设计与实现
一.功能描述:
在客户端/服务器/客户端模式中,基于Socket通信要实现信息共享,即服务器可以向其他多个客户端发送广播消息,客户端通过服务器也可以向其他客户端彼此收发送消息。类似于聊天室的那种功能,实现信息能在多个客户端之间共享。
客
户
端
服
务
器
客
户
端
客
户
端
链接
链接
转发
链接
转发
客户端先与服务器建立连接,服务器接收客户端的消息,再转发给其他的客户端,转发之前客户端都必须先与服务器建立连接才可以,每个客户端之间通过服务器间接通信,从而实现客户端彼此间的通信。
二.设计思路:
客户端循环可以不停输入向服务器发送消息,并且启一个线程,专门用来监听服务器端发来的消息并打印输出。服务器端启动时,启动一个监听何时需要向客户端发送消息的线程。
每次接受客户端连接请求,都启一个线程进行处理,并且将客户端信息存放到公共集合中。当客户端发送消息时,服务器端将消息顺序存入队列中,当需要输出时,从队列中取出广播到各客户端处。
客户端输入showuser命令可以查看在线用户列表,查看到每个客户端名,输入bye向服务器端申请退出连接。
创建服务端Socket,创建向客户端发送消息线程,监听客户端请求并处理。
监听是否有输出消息请求线程类,向客户端发送消息。
将缓存在队列中的消息按顺序发送到各客户端,并从队列中清除。
创建客户端,与服务器连接,并输入发送消息,
用于监听服务器端向客户端发送消息线程。
网络程序是建立在TCP/IP协议的基础上,致力于应用层,传输层向应用层提供了套接字Socket接口,Socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接以及进行数据传输。
两个进程之间通信过程是从建立连接开始的,接着交换数据,到断开连接结束,套接字可看做是通信线路两端的收发器,进程通过套接字来收发数据。
进程1
Socket
Soket
进程2
TCP连接
套接字可以看做通信连接两端的收发器
三.代码行编辑,行注释:
服务器端:
//创建服务端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class Server extends ServerSocket{
private static final int SERVER_PORT =2014; //定义个端口号
private static boolean isPrint =false;//是否输出消息标志
private static List user_list =new ArrayList();//登录用户集合
private static ListServerThread thread_list =new ArrayListServerThread();//服务器已启用线程集合
private static LinkedListString message_list =new LinkedListString();//存放消息队列
//创建服务端Socket,创建向客户端发送消息线程,监听客户端请求并处理
public Server()throws IOException{
super(SERVER_PORT); //创建ServerSocket
new PrintOutThread(); //创建向客户端发送消息线程
try {
while(true){ //监听客户端请求,启个线程处理
Socket socket
您可能关注的文档
- Drupal第三方模块汇集.docx
- DSP应用技术课程设计指导书.doc
- dsp课程设计实验报告总结.docx
- Crowbar电阻用在风力发电机转子侧.doc
- EclipseRCPWizrdPage动态实现方法.doc
- Echarts调用Sqlserver动态数据.doc
- BAC双面自粘防水卷材屋面防水工程施工工法.doc
- EDI模式的操作.doc
- EDI的应用对国际贸易实务的影响.doc
- ERP考试内容.docx
- 泰州市五年级上学期语文10月第一次月考试卷C卷 .pdf
- 河北省保定市高碑店市2023-2024学年七年级上学期月考数学试题.pdf
- 特殊教育学校庆元旦活动方案(精选14篇) .pdf
- 生产管理副总经理岗位职责 .pdf
- 湖北省荆州市2024届九年级下学期中考一模数学试卷(含解析) .pdf
- 湖南省邵阳邵东市第一中学2024_2025学年高一历史上学期第三次月考试题.pdf
- 湖南省长沙市南雅中学2023-2024学年高二上学期第一次月考语文试题答案.pdf
- 福建省厦门市六中学2022-2023学年九年级物理第一学期期末统考试题含解析.pdf
- 物流工作汇报(13篇) .pdf
- 湘教版七年级地理下册期中考试卷及答案【可打印】 .pdf
文档评论(0)