用到socket时发现什么都不记得了,做一下复习。

 

何为计算机网络?网络的分层结构?

www.baidu.com

  1. 网络编程三要素
  1. IP

Internet Protocol(网络之间互连的协议),中文缩写为“网协”,在Java中使用InetAddress类来表示。

IP的版本:IPv4(32位)、IPv6(128位)

IP地址被分成了A、B、C、D、E五类,其中ABC为基本类

A类:10.0.0.0—10.255.255.255

B类:172.16.0.0—172.31.255.255

C类: 192.168.0.0—192.168.255.255

Window系统下查看本地IP:   win+r  cmd  ipconfig

Linux:终端下ifconfig

  1. 端口

端口(port),可以认为是设备与外界通讯交流的出口,

Java网络编程Socket

在同一台电脑上端口不能重复,否则端口冲突。

如果我们需要自定义端口,建议使用10000以上的。

  1. 协议

网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定,如怎样建立连接,怎样相互识别等。只有遵循了这个约定,计算机之间才能相互通信交流,它的三要素是:语法、语义、时序。

Http:超文本传输协议

Https:用安全套接字层传送的超文本传输协议

TCPUDP

TCP:面向连接,传输可靠(保证数据正确性,保证数据顺序),用于大量数据,速度慢,建立连接需要开销较多(时间,系统资源)。

ServerSocket

Socket

UDP:面向非连接,传输不可靠,易掉包,用于传输少量数据,速度快。

DatagramSocket

URLConnection

  1. URLURI

URI

统一资源标识符,是一个用于标识某一互联网资源名称的字符串。

协议://IP地址:端口号/资源路径

http://www.briup.com/index.php/android.html

http://www.briup.com/index.php/ios.html

URL

统一资源定位符,是互联网上标准资源的地址。

java中,URI表示一个统一资源的标识符,不能用于定位任何资源,唯一的作用就是解析,而URL则包含了一个可以打开该资源的输入流。

可以简单理解URLURI的特例,它们都表示一个资源路径

  1. socket

socket是为网络服务提供的一种机制,网络通讯的两端都有socket,网络通讯就是socket的通讯,数据在socket之间进行IO传输。

UDP传输

DatagramSocketUDP传输的发送和接收数据报的套接字。

(套接字是两端之间的通信端点)

DatagramPacket:数据报包的封装类。

       eg

       服务端:

       DatagramSocket socket=new DatagramSocket(10000);

       byte[] buffer=new byte[1024];

       DatagramPacket datagramPacket=new DatagramPacket(buffer, 1024);

       socket.receive(datagramPacket);

       System.out.println(new String(buffer, 0, datagramPacket.getLength(), "GBK"));

       socket.close();

       客户端:

       String s = "套马的汉子你威武雄壮";

       DatagramSocket socket = new DatagramSocket(20000);

       DatagramPacket datagramPacket = new DatagramPacket(s.getBytes(),

              s.getBytes().length, InetAddress.getLocalHost(), 10000);

       socket.send(datagramPacket);

       socket.close();

       客户端和服务端都建立在本机上DatagramSocket20000端口上的向10000端口上发送数据,10000接收收到后打印。一个简单的socket-UDP通讯。

TCP传输

       ServerSocket:服务端套接字

       Socket:客户端套接字。

服务端:

服务端要明确它要处理的数据是从哪个端口进入

当有客户端访问时,需要明确是哪个客户端,可以通过accept()方法获取已连接的客户端的Socket对象,并通过该对象的IO流与客户端进行通讯。

当客户端访问结束时,关闭该客户端对象。

       客户端:

在创建 Socket 对象时就需要连接指定主机。

因为TCP是面向连接的,所以在建立服务时就要有服务端存在。

连接成功之后形通道,在该通道中进行数据的传输。

eg1

Java网络编程Socket

Java网络编程Socket

eg2:建立一个文本转换服务器,即客户端给服务端发送文本,服务端将文本转换成大写返回给客户端,要求客户端可以不断进行文本转换请求,客户端输入“over”,转换结束。

Java网络编程Socket

Java网络编程Socket

 

相关文章: