博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Java聊天室server]实战之二 监听类
阅读量:7238 次
发布时间:2019-06-29

本文共 2267 字,大约阅读时间需要 7 分钟。

前言

学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的“多谋善断";本系列尽管涉及的是socket相关的知识,但学习之前,更想和广大程序猿分享的是一种心境微笑:学习是一个循序渐进的过程,心态应该随时调节,保持戒骄戒躁的状态。比方近期在看网易公开课MIT《算法导论》,老师提到,学习算法之前要计算机数学+离散数学+概率论等课程的知识,所以一直学不好算法的程序猿最好还是从基础入手,这都是中国式教育惹的祸啊!(此处省略一万字......)

原文地址:Building a Java chart server[1]

项目源代码:

文件夹

正文

server端做什么事情?

在我们解说监听类之前,我们先解说server端。这么做有一个时间上的前提,由于执行系统时,server端必须在不论什么一个client连接它之前先启动。

我们的server端是一个单独的程序 -- 执行在自己机器上单一的Java线程。它执行支持软件不过Java虚拟机。并且它不须要Web server或者应用server,虽然Web server或者应用server被经经常使用作client的server。

很多其它高级的server系统常常在大型架构中嵌入一些服务端代码。这个架构可能提供负载均衡,处理大量的client准备专门的库,进程迁移和数据库服务功能。然而我们的样例有自己的位置。它关心的事全部关于自身的网络响应。正如我们看到的,这并非非常难。

—————————————————————————————————————————————————————————————————————————

监听port

我们首先要多的是准备接受传入的连接。要做到,我们必需要监听port。

port能够觉得是计算机的一个地址。要记住,同一时间,一台计算机能够作为Webserver,聊天server,FTPserver和其它种类的server。正由于如此,连接上一台server不仅要识别该机器地址,还有机器内部的特有服务。内部地址就是所说的port,它用整数表示,1到65535。

很多标准的服务有专用的port号。比如,telnet 是23,FTP是20和21,Webserver,默认上使用的80。因为我们的聊天系统不非常出名,我们使用可分配port号中的一个。

我们用port5000.也就是说我们的server在port5000监听。当我们的client连接上服务端时,会识别server机器上的port号5000。这样一来,client和server端就能够通信了。

—————————————————————————————————————————————————————————————————————————

套接字

client和server端的通信是通过叫做套接字的Java对象建立的。套接字不全然是Java特有的;该术语直接来自于IP(Internet协议)网络编程。在Java编程中,套接字对象简单封装了底层套接字,多年以来Internet程序猿一直使用。用Java语言提取是很简洁,所以Java中的套接字编程会比在C语言中桁架愉快。

最重要的事情是知道套接字对象包括两种流(尤其)。一种用于读取传入的数据,还有一种是数据传输。换句话说,套接字对象有输入流和输出流。

(假设你对流不熟悉,仅仅要理解他们是用于读取和输出数据的对象,数据一般是字节流。假设你还不知道他们,你应该看看包获取很多其它信息)

—————————————————————————————————————————————————————————————————————————

监听类

如今我们開始7个组件中的第一个功能点,监听类。我们称之Server.java

接下来的章节会展示该类的必要元素:构造器和main()程序

—————————————————————————————————————————————————————————————————————————

构造器

server端的构造器须要一个參数 -- port号。它告诉当我们准备启动接收连接时监听什么port。构造器代码例如以下所看到的:

// 构造函数和接收循环一体化public Server( int port ) throws IOException {// 我们须要做的是监听listen( port );}
注意 listen() 函数负责server端剩下的工作。我们在下一节中解说。

—————————————————————————————————————————————————————————————————————————

main() 函数

我们写main() 程序能够让server端独立执行。其实,一旦你有了mian()程序,能够嵌入主要的server代码在某些更大的场合上使用。但对于我们的目的来说,server一直在那里启动。main()代码例如以下所看到的:

// Main程序// 用法: java Server >port

—————————————————————————————————————————————————————————————————————————

结束语

如今我们已经准备好监听,我们会在下一节中接续解说怎么接收新的连接和用它哪些事情。

參考文献

[1]. 

[2]. 以及中文系列 

[3]. 

你可能感兴趣的文章
一个缓存实现平均分配队列的方案
查看>>
How do I extract a single column from a data.frame as a data.frame
查看>>
Js获取后台集合List的值和下标的方法
查看>>
Jenkins~powershell+cmd发布nuget包包
查看>>
网络上的等待事件 —— SQL*Net message from client/dblink
查看>>
Myeclipse、eclipse安装lombok
查看>>
C# AES要解密的数据的长度无效
查看>>
JS 推断URL中是否含有 http:// 假设没有则自己主动为URL加上
查看>>
基于ELK5.1(ElasticSearch, Logstash, Kibana)的一次整合
查看>>
利用recv和readn函数实现readline函数
查看>>
MacOs brew 命令行安装常见工具
查看>>
XDroidMvp 轻量级的Android MVP快速开发框架
查看>>
学习项目管理
查看>>
Android 非静态内部类导致内存泄漏原因深入剖析
查看>>
java zxing生成二维码
查看>>
Nginx安装lua-nginx-module模块
查看>>
elasticsearch 工具类
查看>>
【转】Eclipse 乱码 解决方案总结(UTF8 -- GBK)
查看>>
揭示同步块索引(上):从lock开始
查看>>
js中#代表什么
查看>>