Java之网络编程

 网络编程

主机IP

在程序中表示:

1)值的表示

IPV432位整数,8位一组,用.分割,例如:192.168.11.45

       每个8位的范围[0,255]

IPV6128位整数表示,16位一组,用:分割,例如:X:X:X:X:X:X:X:X

       每个16位用十六进制值表示

2)对象表示:InetAddress

此类表示互联网协议 (IP) 地址,它有两个子类Inet4AddressInet6Address,分别对应IPV4IPV6InetAddress类没有提供公共的构造器,而是提供了如下几个静态方法来获取InetAddress实例。

  • public static InetAddress getLocalHost()
  • public static InetAddress getByAddress(byte[] addr)
  • public static InetAddress getByName(String host)

InetAddress提供了如下几个常用的方法:

  • public String getHostAddress():返回 IP 地址字符串(以文本表现形式)。
  • public String getHostName():获取此 IP 地址的主机名
  • public String getCanonicalHostName():获取此 IP 地址的完全限定域名
  • public boolean isReachable(int timeout):测试是否可以达到该地址。
  • 端口号

    范围:[0,65535]

    常见的端口号:

           tomcat/JBoss8080

           http80

           mysql3306

           oracle1521

           sql server1433

  • 网络协议

  • 应用层:网络服务与最终用户的一个接口。协议有:HTTPFTPSMTPDNSTELNETHTTPSPOP3等等。
  • 表示层:数据的表示、安全、压缩。格式有:JPEGASCllDECOIC、加密格式等。
  • 会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话
  • IP协议是一种非常重要的协议。IPinternet protocal)又称为互联网协议。IP的责任就是把数据从源传送到目的地。它在源地址和目的地址之间传送一种称之为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。经常与IP协议放在一起的还有TCPTransmission Control Protocol)协议,即传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。而通常我们说的TCP/IP协议,其实是指TCP/IP协议族,因为该协议家族的两个最核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准,所以简称为TCP/IP协议。

    TCPTransmission Control Protocol 传输控制协议   

  • 1)面向连接的

  • 2)可靠的    

  • 3)基于字节流   

  • 4)可以传输大量数据的

  • UDPUser Datagram Protocol 用户数据报协议   

  • 1)非面向连接的      

  • 2)不可靠的       

  • 3)基于数据报的    

  • 4)数据量大小有限制的64K

  • 传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCPUDP
  • 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMPIGMPIPIPV4 IPV6)、ARPRARP
  • 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
  • 物理层:建立、维护、断开物理连接。
  • Socket编程

    Socket:套接字,代表网络通信的一端,负责和网卡驱动程序沟通的对象。

    •  

    分为: 1)流套接字:ServerSocketSocket 2)数据报套接字:DatagramSocket

    ServerSocket的常用构造方法和其他方法:

  • ServerSocket(int port) :指定在某个端口号监听客户端的连接和通信
  • Socket accept() :监听和接收客户端的连接
  • void close() :关闭
  • Socket类的常用构造方法:

  • public Socket(InetAddress address,int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
  • public Socket(String host,int port):创建一个流套接字并将其连接到指定主机上的指定端口号。
  • public InputStream getInputStream():返回此套接字的输入流,可以用于接收消息
  • public OutputStream getOutputStream():返回此套接字的输出流,可以用于发送消息
  • public InetAddress getInetAddress():此套接字连接到的远程 IP 地址;如果套接字是未连接的,则返回 null
  • public void close():关闭此套接字。套接字被关闭后,便不可在以后的网络连接中使用(即无法重新连接或重新绑定)。需要创建新的套接字对象。 关闭此套接字也将会关闭该套接字的 InputStream OutputStream
  • public void shutdownInput():如果在套接字上调用 shutdownInput() 后从套接字输入流读取内容,则流将返回 EOF(文件结束符)。 即不能在从此套接字的输入流中接收任何数据。
  • public void shutdownOutput():禁用此套接字的输出流。对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将抛出 IOException 即不能通过此套接字的输出流发送任何数据。
  • 注意:先后调用SocketshutdownInput()shutdownOutput()方法,仅仅关闭了输入流和输出流,并不等于调用Socketclose()方法。在通信结束后,仍然要调用Scoketclose()方法,因为只有该方法才会释放Socket占用的资源,比如占用的本地端口号等。

    DatagramSocket

  • DatagramPacket(byte[] buf, int length)
  • DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
  • Socket类的常用方法:

     

    •  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ricky_Ribbon

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值