当前位置: 首页 > news >正文

网站建设网站建设教程海外免费云服务器

网站建设网站建设教程,海外免费云服务器,开鲁视频,seo网络科技有限公司21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java已经将网络程序所需要的元素封装成不同的类#xff0c;用户只要创建这些类的对象#xff0c;使用相应的方法#xff0c;即使不具备有关的网络知识#xff0c;也可以编写出高质量的网络通信程序…21.1 网络程序设计基础 网络程序设计编写的是与其他计算机进行通信的程序。Java已经将网络程序所需要的元素封装成不同的类用户只要创建这些类的对象使用相应的方法即使不具备有关的网络知识也可以编写出高质量的网络通信程序。 21.1.1局域网与互联网 为了实现两台计算机的通信必须用一个网络线路连接两台计算机。 21.1.2网络协议 网络协议规定了计算机之间连接的物理、机械(网线与网卡的连接规定)、电气(有效的电平范围)等特征计算机之间的相互寻址规则数据发送冲突的解决方式长数据如何分段传送与接收等内容。就像不同的国家有不同的法律一样目前网络协议也有多种。下面简单地介绍几个常用的网络协议。1.IP协议 IP 是Internet Protocol的简称是一种网络协议。Internet网络采用的协议是TCP/IP协议其全称是Transmission Control Protocol/Internet Protocol。Internet依靠TCP/IP协议在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统间的互联。在Internet网络上存在着数以亿计的主机每台主机都用网络为其分配的Internet地址代表自己这个地址就是IP地址。 TCP/IP模式是一种层次结构共分为四层各层实现特定的功能提供特定的服务和访问接口。 2.TCP与UDP 协议 在TCP/IP协议栈中有两个高级协议是网络应用程序编写者应该了解的即传输控制协议(Transmission Control Protocol,TCP)与用户数据报协议(User Datagram Protocol,UDP)。 TCP协议是一种以固接连线为基础的协议它提供两台计算机间可靠的数据传送。TCP可以保证数据从一端送至连接的另一端时能够确实送达而且抵达的数据的排列顺序和送出时的顺序相同。因此TCP协议适合可靠性要求比较高的场合。就像拨打电话必须先拨号给对方等两端确定连接后相互才能听到对方说话也知道对方回应的是什么。 HTTP、FTP 和 Telnet等都需要使用可靠的通信频道。例如HTTP从某个URL读取数据时如果收到的数据顺序与发送时不相同可能就会出现一个混乱的HTML文件或是一些无效的信息。 UDP是无连接通信协议不保证数据的可靠传输但能够向若干个目标发送数据或接收来自若干个源的数据。UDP以独立发送数据包的方式进行。这种方式就像邮递员送信给收信人可以寄出很多信给同一个人且每一封信都是相对独立的各封信送达的顺序并不重要收信人接收信件的顺序也不能保证与寄出信件的顺序相同。 UDP协议适合于一些对数据准确性要求不高但对传输速度和时效性要求非常高的网站如网络聊天室、在线影片等。这是由于TCP协议在认证上存在额外耗费可能使传输速度减慢而UDP协议即使有一小部分数据包遗失或传送顺序有所不同也不会严重危害该项通信。 注意一些防火墙和路由器会设置成不允许UDP数据包传输因此若遇到UDP连接方面的问题应先确定所在网络是否允许UDP协议。 21.1.3端口与套接字 一般而言一台计算机只有单一的连到网络的物理连接(PhysicalConnection)所有的数据都通过此连接对内、对外送达特定的计算机这就是端口。网络程序设计中的端口(port)并非真实的物理存在而是一个假想的连接装置。端口被规定为一个在0~65535的整数。HTTP服务一般使用80端口 FTP服务使用21端口。假如一台计算机提供了HTTP、FTP等多种服务那么客户机会通过不同的端口来确定连接到服务器的哪项服务上如图21.3所示。 通常0~1023 的端口数用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口数以避免端口号与另一个应用或系统服务所用端口冲突。 网络程序中的套接字(Socket)用于将应用程序与端口连接起来。套接字是一个假想的连接装置就像插座一样可连接电器与电线如图21.4所示。Java将套接字抽象化为类程序设计者只需创建Socket类对象即可使用套接字。 21.2 TCP程序 TCP 网络程序设计是指利用Socket类编写通信程序。利用TCP协议进行通信的两个应用程序是有主次之分的一个称为服务器程序另一个称为客户机程序两者的功能和编写方法大不一样。 21.2.1InetAddress类 jae包中的InetAddress类是与IP地址相关的类利用该类可以获取IP地址、主机地址等信息。 import java.net.*; //导入java.net包 public class Address { //创建类public static void main(String[] args) {InetAddress ip; //创建InetAddress对象try { //使用try语句块捕捉可能出现的异常ip InetAddress.getLocalHost(); //实例化对象String localname ip.getHostName(); //获取本机名String localip ip.getHostAddress(); //获取本机IP地址System.out.println(本机名 localname); //将本机名输出System.out.println(本机IP地址 localip); //将本机IP地址输出} catch (UnknownHostException e) {e.printStackTrace(); //输出异常信息}} } 21.2.2SeverSockt类 java.net包中的ServerSocket类用于表示服务器套接字其主要功能是等待来自网络上的“请求”。 它可通过指定的端口来等待连接的套接字。服务器套接字一次可以与一个套接字连接。如果多台客户机同时提出连接请求服务器套接字会将请求连接的客户机存入列队中然后从中取出一个套字。与服务器新建的套接字连接起来。若请求连接数大于最大容纳数则多出的连接请求被拒绝。默认大小是50。 ServerSocket类的构造方法通常会抛出IOException异常具体有以下几种形式: ☑    ServerSocket():创建非绑定服务器套接字。     ☑    ServerSocket(int port):创建绑定到特定端口的服务器套接字。 ☑    ServerSocket(int port, int backlog):利用指定的backlog创建服务器套接字并将其绑定到指定的本地端口号上。 ☑    ServerSocket(int port, int backlog, InetAddress bindAddress):使用指定的端口、侦听backlog和要绑定到的本地IP地址创建服务器。这种情况适用于计算机上有多块网卡和多个IP地址的情况用户可以明确规定ServerSocket在哪块网卡或哪个IP地址上等待客户的连接请求。 ServerSocket类的常用方法如表 21.2所示。 调用 ServerSocket 类的accept()方法会返回一个和客户端 Socket 对象相连接的 Socket 对象。服务器端的Socket 对象使用getOutputStream()方法获得的输出流将指向客户端 Socket 对象使用 getinputStream()方法获得的那个输入流;同样服务器端的 Socket 对象使用 getlnputStream()方法获得的输入流将指向客户端 Socket 对象使用getOutputStream()方法获得的那个输出流。也就是说当服务器向输出流写入信息时客户端通过相应的输入流就能读取反之亦然。  21.2.3TCP网络程序设计 TCP通信方式呢  主要的通讯方式是一对一的通讯方式也有着优点和缺点  它的优点对比于UDP来说就是更可靠 因为它的通讯方式是需要先发送消息 看看客户端是否能够接收到消息 如果没有回复消息的话 服务端  就不会发出文件 等待客户端回复消息这个握手模式的话  就会非常可靠  以下代码进行讲解   import java.io.*; import java.net.*;public class MyServer {private ServerSocket server; // 服务器套接字private Socket socket; // 客户端套接字void start() {// 启动服务器try {server new ServerSocket(8998); // 服务器启用8998端口System.out.println(服务器套接字已经创建成功);while (true) {System.out.println(等待客户端的连接);socket server.accept(); // 服务器监听客户端连接// 根据套接字字节流创建字符输入流BufferedReader reader new BufferedReader(new InputStreamReader(socket.getInputStream()));while (true) {// 循环接受信息String message reader.readLine();// 读取一行文本if (exit.equals(message)) {// 如果客户端发来的内容为“exit”System.out.println(客户端退出);break;// 停止接受信息}System.out.println(客户端: message);}reader.close(); // 关闭流socket.close(); // 关闭套接字}} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) {MyServer tcp new MyServer();tcp.start(); // 启动服务器} } 21.3 UPD程序 用户数据报协议(UDP)是网络信息传输的另一种形式。基于UDP的通信和基于TCP的通信不同基于UDP的信息传递更快但不提供可靠性保证。使用UDP传递数据时用户无法知道数据能否正确地到达主机也不能确定到达目的地的顺序是否和发送的顺序相同。虽然UDP是一种不可靠的协议但如果需要较快地传输信息并能容忍小的错误可以考虑使用UDP。 基于 UDP通信的基本模式如下: ☑将数据打包(称为数据包)然后将数据包发往目的地。 ☑接收别人发来的数据包然后查看数据包。 发送数据包的步骤如下: (1)使用DatagramSocket()创建一个数据包套接字。 (2)使用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)创建要发的数据包。 (3)使用DatagramSocket类的send()方法发送数据包。 接收数据包的步骤如下: (1)使用DatagramSocket(int port)创建数据包套接字绑定到指定的端口。 (2)使用DatagramPacket(byte[] buf, int length)创建字节数组来接收数据包。 (3)使用DatagramPacket类的receive(方法接收UDP包。注意 DatagramSocket类的receive()方法接收数据时如果还没有可以接收的数据在正常情况下 receive()方法将阻害一直等到网络上有数据传来receive()方法接收该数据并返回。如果网络上没有数据发送过来receive()方法也没有阻塞肯定是程序有问题大多数情况下是因为使用了一个被其他程序占用的端口号。 21.3.1DatagramPacket类 avanet 包的 DatagramPacket类用来表示数据包。DatagramPacket类的构造方法如下☑DatagramPacke1(byte]buf, int length). ☑DatagramPackel(byse[] buf,int length,InetAddress address, int port). 第一种构造方法在创建DatagramPacket对象时指定了数据包的内存空间和大小。第二种构造方法不仅指定了数据包的内存空间和大小还指定了数据包的目标地址和端口。在发送数据时必须指定接收方的Socket地址和端口号因此使用第二种构造方法可创建发送数据的DatagramPacket对象。 21.3.2DatagramSocket类 java.net 包中的DatagramSocket类用于表示发送和接收数据包的套接字。该类的构造方法如 下:  ☑DatagramSocket()。 ☑DatagramSocket(int port)。 ☑DatagramSocket(int port, InetAddress addr)。 第一种构造方法创建DatagramSocket对象构造数据报套接字并将其绑定到本地主机任何可用的端口上。第二种构造方法创建DatagramSocket对象创建数据报套接字并将其绑定到本地主机的指定端口上。第三种构造方法创建DatagramSocket对象创建数据报套接字并将其绑定到指定的端口和指定的本地地址上。第三种构造函数适用于有多块网卡和多个IP地址的情况。 最主要的是TCP和UDP两个部分  他们两主要的区别就是一个是一对一通信  一个是一对多通信   当然两者都有各自的优势和劣势接下来先讲解 TCP部分 21.3.3UPD网络程序设计 下面创建一个广播数据报程序 import java.io.IOException; import java.net.*;public class Notification extends Thread {String weather 节目预报八点有大型晚会请收听;// 发送的消息int port 9898; // 端口InetAddress iaddress null;MulticastSocket socket null; // 多点广播套接字Notification() {try {iaddress InetAddress.getByName(224.255.10.0); // 实例化InetAddress指定地址socket new MulticastSocket(port); // 实例化多点广播套接字socket.setTimeToLive(1); // 指定发送范围是本地网络socket.joinGroup(iaddress); // 加入广播组} catch (IOException e) {e.printStackTrace(); // 输出异常信息}}public void run() {while (true) {DatagramPacket packet null; // 数据包byte data[] weather.getBytes(); // 字符串消息的字节数组packet new DatagramPacket(data, data.length, iaddress, port); // 将数据打包System.out.println(weather); // 控制台打印消息try {socket.send(packet); // 发送数据sleep(3000); // 线程休眠} catch (IOException e) {e.printStackTrace(); } catch (InterruptedException e) {e.printStackTrace();}}}public static void main(String[] args) { Notification w new Notification();w.start(); // 启动线程} }
http://wiki.neutronadmin.com/news/343057/

相关文章:

  • 公司网站建设是什么费用合肥工业设计公司
  • 无锡网站建设优化百度商桥网站
  • 校园网站建设的意见贪玩战online
  • 网站建设程序策划书美食网站主页怎么做
  • 高端定制外贸网站手机网站横向切换
  • 站长之家seo综合查询可以做视频推广的网站有哪些内容
  • 建设银行网站打不开 显示停止工作医疗网站建设需要什么资质
  • 计算机应用技术网站开发方向大良手机网站建设
  • 公司网站建设升上去校园网站素材
  • 陕西省门户网站建设政策建设银行科技中心网站首页
  • 建设银行官方网站广州企业网站需求方案
  • access网站开发wordpress 仿百度百家
  • 个人做网站 优帮云企业被网站收录
  • 中国电信 网站备案想招聘员工去哪个网站
  • 颍上县建设局网站wordpress迁移器
  • 产品备案号查询平台官网如何做seo网站
  • 西安 网站开发 招聘wordpress 大数据量查询
  • wap网站一览阿里云 wordpress 博客
  • 网站源码和模板如果管理多个wordpress
  • 开发建设网站需要什么人才网站的建设服务
  • 宁波网站建设托管用ip访问没有备案的网站
  • 佛山市桂城建设局网站网页的构成
  • 昆明网站建设建站模板网站设计计划书的要求
  • 设计师个人网站怎么做网站关键字可以修改吗
  • 在线做交互网站高德地图上怎么没有菲律宾
  • 站长要维护网站wordpress 面包屑插件
  • 专业做网站 台州玉环做个简单的导航网站
  • 网站模板在线预览免费企业信息发布平台
  • 网站规划文字说明网站用动态图片做背景怎么写
  • 做外贸怎么登陆国外网站深圳一元购网站建设