全能影视-Java套接字实现网络编程之基础篇

Java高级开发 套接字 830浏览 177评论

用java开发网络软件非常方便和强大,java的这种力量来源于他独有的一套强大的用于网络的api,这些api是一系列的类和接口,均位于包和中。在这篇文章中我们将介绍套接字(socket)慨念,同时以实例说明如何使用networkapi操纵套接字,在完成本文后,你将具备编写网络低端通讯软件的能力。

什么是套接字(socket)?

networkapi是典型的用于基于tcp/ip网络java程序与其他程序通讯,networkapi依靠socket进行通讯。socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段全能影视写入socket中,该socket将这段全能影视发送给另外一个socket中,使这段全能影视能传送到其他程序中。如图1

我们来分析一下图1,hosta上的程序a将一段全能影视写入socket中,socket的内容被hosta的网络管理软件访问,并将这段全能影视通过hosta的网络接口卡发送到hostb,hostb的网络接口卡接收到这段全能影视后,传送给hostb的网络管理软件,网络管理软件将这段全能影视保存在hostb的socket中,然后程序b才能在socket中阅读这段全能影视。

假设在图1的网络中添加第三个主机hostc,那么hosta怎么知道全能影视被正确传送到hostb而不是被传送到hostc中了呢?基于tcp/ip网络中的每一个主机均被赋予了一个唯一的ip地址,ip地址是一个32位的无符号整数,由于没有转变成二进制,因此通常以小数点分隔,如:198.163.227.6,正如所见ip地址均由四个部分组成,每个部分的范围都是0-255,以表示8位地址。

值得注意的是ip地址都是32位地址,这是ip协议版本4(简称ipv4)规定的,目前由于ipv4地址已近耗尽,所以ipv6地址正逐渐代替ipv4地址,ipv6地址则是128位无符号整数。

假设第二个程序被加入图1的网络的hostb中,那么由hosta传来的全能影视如何能被正确的传给程序b而不是传给新加入的程序呢?这是因为每一个基于tcp/ip网络通讯的程序都被赋予了唯一的端口和端口号,端口是一个全能影视缓冲区,用于保留socket中的输入/输出全能影视,端口号是一个16位无符号整数,范围是0-,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的短口号保留给标准应用程序,比如pop3的端口号就是110,每一个套接字都组合进了ip地址、端口、端口号,这样形成的整体就可以区别每一个套接字t,下面我们就来谈谈两种套接字:流套接字和自寻址数据套接字。

流套接字(streamsocket)

无论何时,在两个网络应用程序之间发送和接收全能影视时都需要建立一个可靠的连接,流套接字依靠tcp协议来保证全能影视正确到达目的地,实际上,ip包有可能在网络中丢失或者在传送过程中发生错误,任何一种情况发生,作为接受方的tcp将联系发送方tcp重新发送这个ip包。这就是所谓的在两个流套接字之间建立可靠的连接。

流套接字在c/s程序中扮演一个必需的角色,客户机程序(需要访问某些服务的网络应用程序)创建一个扮演服务器程序的主机的ip地址和服务器程序(为客户端应用程序提供服务的网络应用程序)的端口号的流套接字对象。

客户端流套接字的初始化代码将ip地址和端口号传递给客户端主机的网络管理软件,管理软件将ip地址和端口号通过nic传递给服务器端主机;服务器端主机读到经过nic传递来的数据,然后查看服务器程序是否处于监听状态,这种监听依然是通过套接字和端口来进行的;如果服务器程序处于监听状态,那么服务器端网络管理软件就向客户机网络管理软件发出一个积极的响应信号,接收到响应信号后,客户端流套接字初始化代码就给客户程序建立一个端口号,并将这个端口号传递给服务器程序的套接字(服务器程序将使用这个端口号识别传来的全能影视是否是属于客户程序)同时完成流套接字的初始化。

如果服务器程序没有处于监听状态,那么服务器端网络管理软件将给客户端传递一个消极信号,收到这个消极信号后,客户程序的流套接字初始化代码将抛出一个异常对象并且不建立通讯连接,也不创建流套接字对象。这种情形就像打电话一样,当有人的时候通讯建立,否则电话将被挂起。

这部分的工作包括了相关联的三个类:inetaddress,socket,和serversocket。inetaddress对象描绘了32位或128位ip地址,socket对象代表了客户程序流套接字,serversocket代表了服务程序流套接字,所有这三个类均位于包中。

inetaddress类

inetaddress类在网络api套接字编程中扮演了一个重要角色。参数传递给流套接字类和自寻址套接字类构造器或非构造器方法。inetaddress描述了32位或64位ip地址,要完成这个功能,inetaddress类主要依靠两个支持类inet4address和inet6address,这三个类是继承关系,inetaddrress是父类,inet4address和inet6address是子类。资讯转帖于认证考试题库

根据您访问的内容,您可能还对以下内容感兴趣,希望对您有帮助:

答:不同的构造方法不仅带的参数不同,所具有的意义也不一样。下面分别解析这两个类的实例初始化过程。ServerSocket实例的初始化ServerSocket类提供了四个构造器:publicSocket(Stringhost,intport)throwsUnknownHostException,IOExcept...

幸运飞艇人工计划在线网答:可以参考一下这段代码//1.构造ServerSocket实例,指定服务端口。ServerSocketservSock=newServerSocket(servPort);while(true){//2.调用accept方法,建立和客户端的连接SocketclntSock=servSock.accept();SocketAddressclientAddre...

答:pack**eplay.b;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;import.ServerSocket;import.Socket;publicclassServerCal{publicstaticvoid...

幸运飞艇人工计划在线网答:关键词:全能影视语言技术1.全能影视语言的出现自从1946年世界上第一台电子计算机问世以来,计算模式的发展经历了三个阶段:集中计算模式、分散计算模式和网络计算模式。Internet的出现,为在网络计算模式下的科学计算和全能影视处理提供了良好平台。然...

答://==============Server.java=================//importjava.io.IOException;import.ServerSocket;import.Socket;publicclassServer{publicstaticvoidmain(String[]args)throwsIOException{ServerSockets=...

答:针对网络通信的不同层次,全能影视提供的网络功能有四大类:InetAddress、URLs、Sockets、Dat**ram1、InetAddress面向的是网络层(IP层),用于标识网络上的硬件资源。2、URL面向的应用层,通过URL,全能影视程序可以直接送出或读入网络上的数据。3...

答:差别很大的,网络编程主要是指网络通信,实现计算机与计算机之间的对话和文件传输等,就像QQ,飞秋,P2P点对点传输等等。而WEB主要就是B/S结构的应用,通俗一点说就是开发网站、网页,像QQ空间,百度这样的....

答:这个网上多的很。

答:(1)服务器首先启动监听程序,对指定的端口进行监听,等待接收客户端的连接请求。(2)客户端程序启动,请求连接服务器的指定端口。(3)服务器收到客户端的连接请求后与客户端建立套接字连接。(4)连接成功后,客户端与服务器分别打开两个...

幸运飞艇人工计划在线网答:privatevoidpostData(Stringurl,Stringdata)throwsException{URLurl=newURL(url);URLConnectionurlConnection=url.openConnection();urlConnection.setDoOutput(true);//提交数据try(PrintWriterpw=newPrintWriter(url...

a&&a+c>b;}}//=================Client.java======================//importjava.io.IOException;import.Socket;importjava.n...

低延迟和高带宽的相对重要性,数值越大则越重要;其各自的绝对值没有意义。该方法的初衷是为了让全能影视能在用非TCP/IP实现的套接字环境下工作得更好,某些需要对网络进行...

用java进行网络编程确实很方便,很容易上手。这几天用java进行socket编程,收获不少。首先,进行服务端的编程,作为服务端,编程主要按下面几个步骤进行://1.创建socketS...

幸运飞艇人工计划在线网这个不好说啊,那要看你做的是什么网络编程了。这个概念太大,httpclient网络爬虫必须添加jar包,基于和socket的c/s程序基本就不需要添加。具体的情况,请发送到lengjia...

Socket

inputstreamoutputstream的子类都是基于字节流的,可以用上,input.readObject()是用来传输java序列化对象的Socketsocket=newSocket(Stringaddress,intport);InputStream...

你说的是网络编程吧,java中有socket套接字实现网络通信,可以做类似於QQ一样的C/S模式的编程。

对指定的端口进行监听,等待接收客户端的连接请求。(2)客户端程序启动,请求连接服务器的指定端口。(3)服务器收到客户端的连接请求后与客户端建立套接字连接。(4)连接成...

对指定的端口进行监听,等待接收客户端的连接请求。(2)客户端程序启动,请求连接服务器的指定端口。(3)服务器收到客户端的连接请求后与客户端建立套接字连接。(4)连...