- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
学习目标01知识目标掌握ServerSocket与客户端Socket通信02能力目标会使用ServerSocket与客户端Socket通信TCP协议下的通讯模型Socket工作流程:首先有两部分客户端和服务器端,客户端需要Socket这个类的对象,而服务器端需要ServerSocket这个类的对象,由客户端Socket发送一个请求,服务器端的ServerSocket在计算机的某一个端口号上进行监听,监听客户端发送的请求之后,那么客户端和服务器端的一个通讯通道就建立起来了,这时候既可以从客户端向服务器端发送数据,服务器端也可以给客户端相应的响应。在客户端发送数据的时候我们需要用到IO流里面的OutputStream,通过这个OutputStream把数据发送给服务器端,服务器端用InputStream来读取客户端当中用OutputStream所写入的数据。Socket 通信过程Socket 通信过程①服务器建立监听过程,监听每个端口是否要求进行通信。②客户端创建一个Socket对象,向服务器端发送连接请求。③服务器监听到客户端的连接请求,创建一个Socket,与客户端进行通信,服务器端与客户端之间的通信管道正式建立起来。④建立接收和发送两个缓存区,并打开Socket及其输入、输出流。⑤根据协议读写Socket内容。⑥通信结束服务器端和客户端之间的通信管道关闭同时意味着关闭Socket。示例:简易聊天室通过Socket编程实现一个简易聊天室。客户端完成后的运行效果如图。在该客户端的界面中,使用了一个TextView控件来显示聊天记录。为了方便查看,将两个用户也放到了一个界面中,实际上应该启动两个模拟器,分别作为两个用户的客户端,此处是为了方便操作才这么做的。示例:简易聊天室 – 服务器端ServerSocket1.新建了一个Java工程作为服务器端。在该Java工程中,我们应该完成以下的操作。(1)指定端口实例化一个ServerSocket,并调用ServerSocket的accept()方法在等待客户端连接期间造成阻塞。(2)每当接收到客户端的Socket请求时,服务器端也相应的创建一个Socket,并将该Socket存入ArrayList中。与此同时,启动一个ServerThread线程来为该客户端Socket服务。示例:简易聊天室 – 服务器端ServerSocket(1)-(2)两步操作,可以通过以下的代码来实现。public class MyServer { //定义ServerSocket的端口号 private static final int SOCKET_PORT = 50000; //使用ArrayList存储所有的Socket public static ArrayListSocket socketList = new ArrayListSocket(); public void initMyServer() { try { //创建一个ServerSocket,用于监听客户端Socket的连接请求 ServerSocket serverSocket = new ServerSocket(SOCKET_PORT); while(true) { //每当接收到客户端的Socket请求,服务器端也相应创建一个Socket Socket socket = serverSocket.accept(); socketList.add(socket); //每连接一个客户端,启动一个ServerThread线程为该客户端服务 new Thread(new ServerThread(socket)).start(); } }catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { MyServer myServer = new MyServer(); myServer.initMyServer(); }}示例:简易聊天室 – 服务器端ServerSocket(3)在启动的ServerThread线程中,我们需要将读到的客户端内容(也就是某一个客户端Socket发送给服务器端的数据),发送给其他的所有客户端Socket,实现信息的广播。其中,在packMessage()方法中,我们对要广播的数据进行了包装。因为要分辨出服务器接收到的消息是来自哪一个客户端Socket的,我们对客户端Socket发送的消息也进行了包装,方法是在消息的头部加上USER_ONE来代表用户往事如风,在消息的头部加上USER_TWO来代表用户依旧淡然。 示例:简易聊天室 – 服务器端ServerSocket操作(3)代码:publ
您可能关注的文档
- 05资格认证库 Adobe平面设计师 单行单列选框工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 多边形套索工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 仿制图章工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 仿制源面板photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 放大镜工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 钢笔工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 红眼工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 画笔工具photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 画笔面板photoshop基础教程.ppt
- 05资格认证库 Adobe平面设计师 混合器画笔工具photoshop基础教程.ppt
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 编辑框.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 单选按钮.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 九宫格 - 项目指导.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 启动Service.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 时间控件.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 使用HttpClient访问网络.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 使用HttpURLConnection访问网络.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 使用MediaPlayer播放音频.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 使用VideoView播放视频.pptx
- Android(安卓)应用开发技术 Android(安卓)应用开发技术 使用WebView加载HTML代码.pptx
最近下载
- 实施指南《GB21345 - 2024黄磷单位产品能源消耗限额》实施指南.pptx VIP
- 吉林省德惠市第三中学2024-2025学年七年级上学期9月月考地理试题.docx VIP
- 气流干燥器设计说明书.doc VIP
- 《电子商务基础》中职电子商务专业全套教学课件.pptx
- 桶装水项目质量管理方案.docx VIP
- 地震数据采集设备的收放方法、集运箱和车辆.pdf VIP
- 压力管道壁厚及开孔补强计算.xls VIP
- 四五级拼音版 (20220824修订).pdf VIP
- 幼儿园区域留痕培训.pptx VIP
- 2025年贵州省高职(专科)分类招生中职生文化综合考试试卷(英语试题)676.pdf VIP
文档评论(0)