怎么用多线程实现TCP并行服务器,服务

怎么用多线程实现TCP并行服务器,服务,第1张

服务器监听端口 做个无限循环 接到一个连接就创建一个通道线程,并将通道线程存储到一个list集合中

import java.io.BufferedReaderimport java.io.IOExceptionimport java.io.InputStreamReaderimport java.io.PrintWriterimport java.net.ServerSocketimport java.net.Socketimport java.text.SimpleDateFormatimport java.util.ArrayListimport java.util.Dateimport java.util.List/* * 4.用socket通讯写出多个客户端和一个服务器端的通讯, * 要求客户发送数据后能够回显相同的数据(回显功能)(实用TCP方式)。 */public class Test4Server { // 主入口public static void main(String[] args) throws IOException {scoketServer() } // 开启的tcp8888监听端口public static void scoketServer() throws IOException {ServerSocket server = new ServerSocket(8888) while (true) {// 未连通前线程阻塞,连通后开启一个socket通道线程后继续监听8888端口Socket socket = server.accept() System.out.println(socket.getInetAddress().getHostAddress()+ "连接进入") new SocketThread(socket).start() }} } // 一个服务器端口中监听多个客服端通道线程class SocketThread extends Thread {// 所有通道写入流的集合private static List<PrintWriter>list =new ArrayList<PrintWriter>()private BufferedReader bufferedReader private PrintWriter printWriterpublic SocketThread(Socket socket) throws IOException {this.bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())) this.printWriter = new PrintWriter(socket.getOutputStream()) list.add(printWriter) } @Overridepublic void run() {String string = null while (true) {try {// 服务器在通道中读到的信息回显给客服端string = bufferedReader.readLine() System.out.println("客服端信息:" + string) for(PrintWriter printWriter:list ){printWriter.write("服务器回显:" + string + "\r\n") printWriter.flush() }} catch (IOException e) { }} }}

常见接口 1.并行接口 目前,计算机中的并行接口主要作为打印机端口,接口用的不再是36针接头而是25针D形接头。所谓“并行”,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,由于长度增加,干扰就会增加,容易出错。 目前有五种常见的并口:4位、8位、半8位、EPP和ECP,大多数PC机配有4位或8位的并口,许多利用Intel386芯片组的便携机配有EPP口,支持全部IEEE1284并口规格的计算机配有ECP并口。 标准并行口4位、8位、半8位: 4位口一次只可以输入4位数据,但可以输出8位数据;8位口可以一次输入和输出8位数据;半8位也可以。 EPP口(增强并行口):由Intel等公司开发,允许8位双向数据传送,可以连接各种非打印机设备,如扫描仪、LAN适配器、磁盘驱动(Drive)器和CDROM 驱动(Drive)器等。 ECP口(扩展并行口):由Microsoft、HP公司开发,能支持命令周期、数据周期和多个逻辑设备寻址,在多任务环境下可以用DMA(直接存储器 访问)。 目前几乎全部的586机的主板都集成了并行口插座,标注为 Paralle1或LPT1,是1个26针的双排针插座。 2.串行接口 计算机的另一种标准接口是串行口,目前的PC机一般至少有2个串行口COM1和COM2。串行口不一样于并行口之处在于它的数据和控制信息是一位接一位串行地传送下去。这样,虽然速度会慢有些,但传送距离较并行口更长,因此长距离的通信应用串行口。通常COM1用的是9针D形连接器,而COM2有些使 用的是老式的DB25针连接器。 3.磁盘接口 1)IDE接口 IDE接口也叫做ATA端口,只可以接2个容量不超过528M的硬盘驱动(Drive)器,接口的成本很低,因此在386、486时期非常流行。但大多数IDE接口不支持DMA数据传送,只可以用标准的PCI/O端口指令来传送全部的命令、状态、数据。几乎全部的586主板上都集成了2个40针的双排针IDE接口插座,分别标注为IDE1和IDE2。 2)EIDE接口 EIDE接口较IDE接口有了很大改进,是目前最流行的接口。 首先,它所支持的外设不再是2个而是4个了,所支持的设备除了硬盘,还包括CD-ROM驱动(Drive)器磁盘备份设备等。 其次,EIDE标准取消了528MB的限制,代之以8GP限制。 第三,EIDE有更高的数据传送速率,支持PIO模式3和模式4标准。 4.SCSI接口 SCSI(SmallComputerSystemInterface)小计算机系统(System)接口,在做图形处理和网络(互联网)服务的计算机中被广泛采用SCSI接口的硬盘。除了硬盘以外,SCSI接口还可以连接CD-ROM驱动(Drive)器、扫描仪和打印机等,它具有以下特点: *可同时连接7个外设; *总线配置为并行8位、16位或32位; *允许最大硬盘空间为8.4GB(有些已达到9.09GB); *更高的数据传输速率,IDE是2MB每秒,SCSI通常可以达到5MB每秒,FASTSCSI(SCSI-2)能达到10MB每秒,最新的SCSI-3甚至能够达到40MB每秒,而EIDE最高只可以达到16.6MB每秒; *成本较IDE和EIDE接口高特别多,并且,SCSI接口硬盘必须和SCSI接口卡配合用,SCSI接口卡也比IED和EIDE接口贵特别多。 *SCSI接口是智能化的,可以彼此通信而不增加CPU的负担。在IDE和EIDE设备之间传输数据时,CPU必须介入,而SCSI设备在数据传输过程中起主动作用,并能在SCSI总线内部具体执行,直至完成再通知CPU。 5.USB接口 最新的USB串行接口标准是由Microsoft、Intel、Compaq、IBM等大公司共同推出,它提供机箱外的热即插即用连接,用户在连接外设时不用再打开(OPEN)机箱、关掉电源,而是采用“级联”方式,每一个USB设备用1个USB插头连接到1个外设的USB插座上,而其本身又提供1个USB插座给下1个USB设备用,通过 这种方式的连接,1个USB控制器可以连接多达127个外设,而每一个外设间的距离可达5米。USB统一的4针圆形插头将取代机箱后的众多的串/并口(鼠标、MODEM)键盘(keyboard)等插头。USB能智能识别USB链上外围设备的插入或拆卸。 除了能够连接键盘(keyboard)、鼠标等,USB还可以连接ISDN、电话系统(System)、数字音响、打印机以及扫描仪等低速外设。

开放性: \x0d\x0a\x0d\x0aSQL Server \x0d\x0a只能在windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。Windows9X系列产品是偏重于桌面应用NT server只适合中小型企业。而且windows平台的可靠性,安全性和伸缩性是非常有限的。它不象unix那样久经考验,尤其是在处理大数据。 \x0d\x0a\x0d\x0aOracle \x0d\x0a能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0a能在所有主流平台上运行(包括 windows)。 但由于早期Sybase与OS集成度不高,因此VERSION 11.9.2以下版本需要较多OS和 DB级补丁。在多平台的混合环境中,会有一定问题。 \x0d\x0a\x0d\x0aDB2 \x0d\x0a能在所有主流平台上运行(包括windows)。最适于海量数据。DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器,而国内到97年约占5%。 \x0d\x0a\x0d\x0a可伸缩性,并行性 \x0d\x0a\x0d\x0aSQL Server \x0d\x0a并行实施和共存模型并不成熟。很难处理日益增多的用户数和数据卷。伸缩性有限。 \x0d\x0a\x0d\x0aOracle \x0d\x0a并行服务器通过使一组结点共享同一簇中的工作来扩展windownt的能力,提供高可用性和高伸缩性的簇的解决方案。如果windowsNT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0a虽然有DB SWITCH来支持其并行服务器,但由于DB SWITCH在技术层面还未成熟,且只支持版本12.5以上的ASE SERVER,因为DB SWITCH技术需要一台服务器充当SWITCH.\x0d\x0a\x0d\x0aDB2 \x0d\x0a具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节点.\x0d\x0a\x0d\x0a安全性 \x0d\x0aSQL Server \x0d\x0a没有获得任何安全证书。\x0d\x0a \x0d\x0aOracle Server \x0d\x0a获得最高认证级别的ISO标准认证。 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0a获得最高认证级别的ISO标准认证。 \x0d\x0a\x0d\x0aDB2 \x0d\x0a获得最高认证级别的ISO标准认证。 \x0d\x0a\x0d\x0a性能 \x0d\x0aSQL Server \x0d\x0a多用户时性能不佳 \x0d\x0a\x0d\x0aOracle \x0d\x0a性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录。 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0a性能接近于 SQL Server。但在UNIX平台下的并发性要优与 SQL Server。 \x0d\x0a\x0d\x0aDB2 \x0d\x0a性能较高适用于数据仓库和在线事物处理。 \x0d\x0a\x0d\x0a客户端支持及应用模式 \x0d\x0aSQL Server \x0d\x0aC/S结构,只支持windows客户,可以用ADO,DAO,OLEDB,ODBC连接. \x0d\x0a\x0d\x0aOracle \x0d\x0a多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接。 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0aC/S结构,可以用ODBC,Jconnect,Ct-library等网络客户连接。 \x0d\x0a\x0d\x0aDB2 \x0d\x0a跨平台,多层结构,支持ODBC,JDBC等客户 \x0d\x0a操作简便 \x0d\x0a\x0d\x0aSQL Server \x0d\x0a操作简单,但只有图形界面。\x0d\x0a \x0d\x0aOracle \x0d\x0a较复杂,同时提供GUI和命令行,在windowsNT和unix下操作相同 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0a较复杂,同时提供GUI和命令行。但GUI较差,常常无法及时状态,建议使用命令行。 \x0d\x0a\x0d\x0aDB2 \x0d\x0a操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同 \x0d\x0a\x0d\x0a使用风险 \x0d\x0aSQL Server \x0d\x0a完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼 \x0d\x0a\x0d\x0aOracle \x0d\x0a长时间的开发经验,完全向下兼容。得到广泛的应用。完全没有风险。 \x0d\x0a\x0d\x0aSybase ASE \x0d\x0a向下兼容, 但是ct-library 程序不益移植。 \x0d\x0a\x0d\x0aDB2 \x0d\x0a在巨型企业得到广泛的应用,向下兼容性好。风险小。 \x0d\x0a经过上述比较,我们不难发现,DB2是最好的数据库。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/140414.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-18
下一篇2023-03-18

发表评论

登录后才能评论

评论列表(0条)

    保存