java网络编程----TCP UDP

原创 2015年07月07日 09:39:09

InetAddress:

获取InetAddress的方式:

getByName(String name)       如果是主机名,必须正确

getByAddress(byte[] addr) 格式要正确

getByAddress(String host,byte[] addr)     addr格式必须正确

getAllByName(String host)      如果是主机名,必须正确

getLocalHost()

 

当时ip地址构成的InetAddress时,getAddressgetHostAddress不会请求DNS,但是getHostNamegetCanonicalHostName()需要请求;同理,当为域名构建的InetAddress,在构建时就会请求DNS服务器,同时把address请求下来。所以所有的都不会再请求DNS

 

getHostName();      如果没有主机名则返回ip四段格式字符串

getCanonicalHostName()   同上,不过第一次获取时都是请求DNS

getAddress()--byte[]   通过这个可以判断时ipv4还是ipv6

getHostAddress       返回ip地址的字符串

 

  测试可达:

即是否可以建立网络连接。

isReachable(int timeout)

isReachable(NetworkInterface interface,int ttl,int timeo)

 

子类:Inet4AddressInet6Address

NetworkInterface

网络接口

获取方法:getByName

  getByInetAddress

          getInetAddresses   枚举

每个网络接口可能对应多个ip

URLURI

URL(Uniform Resource Locators)

URI(Uniform Resource Identifier)

URN(Uniform Resource Name)

URL是最常见的URIURI可以由资源的网络位置来标识资源,也可以由资源的名字、编号或其他特性来标识。

URL

既能标识资源,又能获取资源。

获取方法:URL(String url)

          URL(String protocol,String hostname,String file)

  URL(String protocol,String host,int port,String file)

     URL(URL base,String relative)

会检查协议是否存在,如果不正确,抛异常

 

获取数据:

InputStream openStream()

URLConnection openConnection()

URLConnection openConnection(Proxy proxy)

Object getContent()

Object getContent(Class[] classes)

 

openStream()

完成必要的握手,返回一个流,不包含任何首部或协议相关信息

openConnection()

为指定的URL打开一个socket返回URLConnection,这个URLConnection对象表示一个网络资源的打开的连接。可以通过这个对象进行读或者写。

getContent()

如果URL指示某种文本,返回的对象是某种InputStream,如果指示的是一个图像,返回一个ImageProducer.这两种不同的类有一个共同点,他们本身并不是数据对象,而是一种途径,程序可以通过他们构造数据对象。

 

 

URL重写了equalshashCode方法。

当且仅当两个URL指向相同的资源,有相同的片段标识符和查询字符串,才会认为这两个URL是相等的。而且equals会尝试用DNS解析主机,来判断两个主机是否相同,所以会阻塞。

 

toURI()方法

 

URI

toURL()

equals方法不是阻塞的。uri会转义,比较前不解析。

toString()是没有编码的时候的。

toASCIIString()是编码后的。

 

URLEncoderURLDecoder

由于在url中会出现在不同系统中有歧义的字符,所以对于这些字符需要转义,但是URL类不自动编码或解码。

HTTP

包括 首部行,首部,消息体

超文本传输协议,定义了客户端和服务器端通信的标准,是一种数据格式。顶一个web客户端如何与服务器对话,以及数据如何从服务器传回客户端

200 成功,300重定向 400 客户端错误  500 服务器端错误

 

Socket

连接远程机器,发送数据,接受数据,关闭连接,绑定端口,监听入站数据,在绑定端口上接受来自远程机器的连接。

客户端Socket

程序用构造函数创建一个新的Socket,

Socket尝试连接远程主机

 

一旦建立连接,本地和远程主机就从这个socket得到输入流和输出流。全双工的。

 

Socket s=new Socket(“www.baidu.com”,21);

这不只是创建一个Socket,同时会建立网络连接。有可能连接失败抛异常的

 

socket.getInputstream()

socket.getOutputstream()

 

 

 

服务端Socket

 

ServerSocket

ServerSocket server=new ServerSocket(13)

Socket connection=server.accept();

 

 

UDP Socket

DatagramPacket

DatagramSocket   客户端和服务端都是用这个

datagram

 

 

 

NIO

参考:http://ju.outofmemory.cn/entry/6835

传统的服务器端:

 

一个socket连接对应一个输入输出通道,一个输入输出通道对应一个线程,这样cpu负担比较高。

 

 

所以我们能看出不必像原先那样开大量的线程,然后让线程傻傻的等待。而NIO不必,通道已经由一个线程建立好了,有事就说话,说了就去做,而且在一个线程中建立了多个通道,可以同时做很多事情,不会像原先那样开辟多个线程,耗费CPU资源,关系是1对多的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java基础学习网络编程之UDP和TCP协议 十四 -3

UDP协议传输和接收数据: SendDemo package udp01; import java.net.DatagramPacket; import java.net.DatagramSock...

Java网络编程(TCP_UDP)

端口号两个字节,范围0~655351、在同一个协议下端口号不能重复 2、1024以下的端口号不要使用URL统一资源定位符 URI 统一资源 数据的传输1、协议 TCP/UDP 1) ...

java笔记29 网络编程(UDP TCP)

1.       设络通讯要素 1.1  ip地址,端口号,传输协议         1、找到对方   ...

Java-Socket网络编程TCP和UDP的使用

/*  * java.net.InetAddress:此类表示互联网协议 (IP) 地址。  *  * 两个静态方法:可以获取InetAddress对象  *     static Ine...

java 网络编程 Tcp和UDP 的使用

网络基础知识 计算机网络,就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。 ...

JAVA网络编程入门的两个demo(TCP+UDP)

TCP服务器端 package org.bruce.basic; import java.io.DataInputStream; import java.io.IOException; imp...

java网络编程(TCP与UDP)

TCP客户端; import java.net.*; import java.io.*; public class TCPClient { public static void main(S...

Java网络编程中的TCP,UDP通信方式详解

Java网络编程中的TCP,UDP通信方式详解 1. TCP方式与UDP方式的区别。 2. TCP方式所使用的方法:Socket,ServerSocket以及服务端与客户端通信实例。 3. ...

黑马程序员_java网络编程——UDP传输和TCP传输

------- android培训、java培训、期待与您交流! ----------        在网络编程上两种常见的通信协议是TCP协议和UDP协议。由于TCP协议的特点是:持续、可靠、有连...

19. JAVA 网络编程 Part 1 (IP与InetAddress类、URL与URLConnection类、URLEncoder与URLDecoder类、TCP&UDP)---- 学习笔记

本章目标: 了解IP地址与InetAddress类的关系了解如何使用URL
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)