Java Socket线程的设计原理介绍
Java Socket线程我们经常会用到的技术,但是有很多程序员还是有不少的使用问题,下面我们就看看如何才能进行有关的代码编写,希望大家又说收获。网络的伟大之一也是信息共享,Server可以主动向所有Client广播消息,同时Client也可以向其它Client发布消息。
下面看看如何开发一个可以实时传递消息的程序。
JavaSocket线程的设计原理:
服务器端接受客户端的连接请求,同时启动一个线程处理这个连接,线程不停的读取客户端输入,然后把输入加入队列中,等候处理。在线程启动的同时将线程加入队列中,以便在需要的时候定位和取出。
{源码}
importjava.io.*; importjava.net.*; importjava.util.*; importjava.lang.*; publicclassServerextendsServerSocket { privatestaticArrayListUser_List=newArrayList(); privatestaticArrayListThreader=newArrayList(); privatestaticLinkedListMessage_Array=newLinkedList(); privatestaticintThread_Counter=0; privatestaticbooleanisClear=true; protectedstaticfinalintSERVER_PORT=10000; protectedFileOutputStreamLOG_FILE=newFileOutputStream("d:/connect.log",true); publicServer()throwsFileNotFoundException,IOException { super(SERVER_PORT); newBroadcast(); //appendconnectionlog Calendarnow=Calendar.getInstance(); Stringstr="["+now.getTime().toString()+"]Acceptedaconnection1512"; byte[]tmp=str.getBytes(); LOG_FILE.write(tmp); try { while(true) { Socketsocket=accept(); newCreateServerThread(socket); } } finally { close(); } } publicstaticvoidmain(String[]args)throwsIOException { newServer(); } //---Broadcast classBroadcastextendsThread { publicBroadcast() { start(); } publicvoidrun() { while(true) { if(!isClear) { Stringtmp=(String)Message_Array.getFirst(); for(inti=0;i<Threader.size();i++) { CreateServerThreadclient=(CreateServerThread)Threader.get(i); client.sendMessage(tmp); } Message_Array.removeFirst(); isClear=Message_Array.size()>0?false:true; } } } } //---CreateServerThread classCreateServerThreadextendsThread { privateSocketclient; privateBufferedReaderin; privatePrintWriterout; privateStringUsername; publicCreateServerThread(Sockets)throwsIOException { client=s; in=newBufferedReader(newInputStreamReader(client.getInputStream())); out=newPrintWriter(client.getOutputStream(),true); out.println("---Welcometothischatroom---"); out.println("Inputyournickname:"); start(); } publicvoidsendMessage(Stringmsg) { out.println(msg); } publicvoidrun() { try { intflag=0; Thread_Counter++; Stringline=in.readLine(); while(!line.equals("bye")) { if(line.equals("l")) { out.println(listOnlineUsers()); line=in.readLine(); continue; } if(flag++==0) { Username=line; User_List.add(Username); out.println(listOnlineUsers()); Threader.add(this); pushMessage("[<"+Username+"comeonin>]"); } else { pushMessage("<"+Username+">"+line); } line=in.readLine(); } out.println("---Seeyou,bye!---"); client.close(); } catch(IOExceptione) {} finally { try { client.close(); } catch(IOExceptione) {} Thread_Counter--; Threader.remove(this); User_List.remove(Username); pushMessage("[<"+Username+"left>]"); } } privateStringlistOnlineUsers() { Strings="-+-Onlinelist-+-1512"; for(inti=0;i<User_List.size();i++) { s+="["+User_List.get(i)+"]1512"; } s+="-+---------------------+-"; returns; } privatevoidpushMessage(Stringmsg) { Message_Array.addLast(msg); isClear=false; } } }
以上就是对Java Socket线程的详细介绍。这就是程序运行后,多用户登陆并且输入信息后的屏幕。实现了信息的实时广播。用户输入"l"就可以列出在线人员表。
您还没有登录,请您登录后再发表评论
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对...
实验一: 关键词: Java控制语法 内容关键词: 语法控制,Java实验 用途: 学习Java语言的控制语法,掌握基础语法知识。...用途: 学习Java中的网络编程,了解Socket通信原理和实现。 实验七: 关键词: 综合实验(选择)
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
◇1.2 java的工作原理 ◇1.3 一切都是对象 ◇1.4 构建java程序 ◇1.5 java程序规范 ◇1.6 建立java开发环境 ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 ...
相关内容见《java程序设计实验指导》 清华大学出版社出版 第1章 Java语言概述和开发环境 1.1 预备知识 1.2 实验1 JDK 5.0路径设置 1.3 实验2 在DOS环境下编译和运行Application和Applet程序 1.4 实验3 在JBuilder...
socket通信的拆包和装包源码 NettyTree 搭建一个基于Netty的通信框架 NIO:非阻塞式IO BIO:阻塞式IO 1) TCP粘包、拆包 2)编解码技术 1)Java序列化 2)业界主流的编解码框架 Thrift Protobuf 3) Websocket 5)...
* 深入分析了Java网络编程的关键技术,如Socket通信、多线程处理等,并通过实例进行了验证。 * 全面介绍了系统的架构设计、功能模块划分以及数据库设计,展现了系统的高度模块化与可扩展性。 * 对系统的实现过程进行...
接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人...
网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计 算机网络编程的基本理论知识如TCP/IP协议、客户端/服务器端模式 (Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读 取、...
设计工作计划与进度安排 1.TCP和 Socket原理 4小时 2.程序设计基础知识准备 4小时 3.扫描器的功能和交互界面设计 6小时 4.端口扫描功能的实现 8小时 5.软件测试及完善 2小时 6.课程设计报告 4小时
相关推荐
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对...
实验一: 关键词: Java控制语法 内容关键词: 语法控制,Java实验 用途: 学习Java语言的控制语法,掌握基础语法知识。...用途: 学习Java中的网络编程,了解Socket通信原理和实现。 实验七: 关键词: 综合实验(选择)
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。在网络编程中对...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
◇1.2 java的工作原理 ◇1.3 一切都是对象 ◇1.4 构建java程序 ◇1.5 java程序规范 ◇1.6 建立java开发环境 ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 ...
相关内容见《java程序设计实验指导》 清华大学出版社出版 第1章 Java语言概述和开发环境 1.1 预备知识 1.2 实验1 JDK 5.0路径设置 1.3 实验2 在DOS环境下编译和运行Application和Applet程序 1.4 实验3 在JBuilder...
◇1.2 java的工作原理 ◇1.3 一切都是对象 ◇1.4 构建java程序 ◇1.5 java程序规范 ◇1.6 建立java开发环境 ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 ...
socket通信的拆包和装包源码 NettyTree 搭建一个基于Netty的通信框架 NIO:非阻塞式IO BIO:阻塞式IO 1) TCP粘包、拆包 2)编解码技术 1)Java序列化 2)业界主流的编解码框架 Thrift Protobuf 3) Websocket 5)...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
◇1.2 java的工作原理 ◇1.3 一切都是对象 ◇1.4 构建java程序 ◇1.5 java程序规范 ◇1.6 建立java开发环境 ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
◇1.2 java的工作原理 ◇1.3 一切都是对象 ◇1.4 构建java程序 ◇1.5 java程序规范 ◇1.6 建立java开发环境 ◇本讲小结 ◇课后习题 ★ 第二讲 Java语言基础知识 ◇课前索引 ◇2.1 简单数据类型 ◇2.2 ...
* 深入分析了Java网络编程的关键技术,如Socket通信、多线程处理等,并通过实例进行了验证。 * 全面介绍了系统的架构设计、功能模块划分以及数据库设计,展现了系统的高度模块化与可扩展性。 * 对系统的实现过程进行...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人...
网通信机制的原理,通过直接继承Thread类来建立多线程。开发中利用了计 算机网络编程的基本理论知识如TCP/IP协议、客户端/服务器端模式 (Client/Server模式)、网络编程的设计方法等。在网络编程中对信息的读 取、...
设计工作计划与进度安排 1.TCP和 Socket原理 4小时 2.程序设计基础知识准备 4小时 3.扫描器的功能和交互界面设计 6小时 4.端口扫描功能的实现 8小时 5.软件测试及完善 2小时 6.课程设计报告 4小时