Socket网络编程总结

网络中进程之间如何通信

  Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。

1.网络的基础知识

  Socket网络编程总结_第1张图片

 

1)IP地址:为实现网络中不同计算机之间的通信,每台机器之间必须有一个唯一标识

2)协议:一个共同的语言,用于两者的沟通

3)端口号:端口好比车厢的座位号,只告诉你车厢号还不够详细,要告诉你座位号才能对号入座啊。

(0~65535),其中0~1023为系统保留

Socket网络编程总结_第2张图片

  两个主机之间要进行通信,就必须遵守这两个协议

IP地址和端口号组成了我们的Socket,Socket是网络上运行的程序之间通信链路的终结点,是TCP和UDP的基础。

java中的网络支持(四大类)

1.InetAddress:用于标识网络上的硬件资源。

2.URL统一资源定位符 通过URL可以直接读取或写入网络上的数据。

       在日常生活中访问的每一个网址都是一个URL,表示Internet上某一资源地址。一般由两部分组成:协议名称和资源名称,

中间用冒号隔开。

3.Socket: 使用TCP协议实现网络通信的Socket相关的类

4.Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信。

TCP和UDP

1)UDP:
  将数据及源和目的封装成数据包中,不需要建立连接。
  每个数据包的大小限制在64K内
  因无连接,是不可靠协议
  不需要建立连接,速度快
 2)TCP:
  建立连接,形成传输数据的通道。
  在连接中进行大量数据传输
  通过三次握手完成连接,是可靠协议
  必须建立连接,效率会稍低。 3)应用:UDP如QQ聊天,视频会议等
      TCP如下载等
 4)举例:UDP如同报话机。
    TCP如同打固定电话。

列:InetAddress类的使用。

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;

public class test {
    public static void main(String[] args) throws UnknownHostException {
        //获取本机的 InetAddress 对象
        InetAddress address = InetAddress.getLocalHost();
        System.out.println("计算机名:"+address.getHostName());
        System.out.println("IP地址:"+address.getHostAddress());
        byte[] bytes = address.getAddress();
        System.out.println("字节数组成的IP:"+Arrays.toString(bytes));
        System.out.println(address);

        //根据计算机名获取InetAddress实例
        //InetAddress address1 = InetAddress.getByName("H-star");
        InetAddress address1 = InetAddress.getByName("59.69.165.49");
        System.out.println("计算机名:"+address.getHostName());
        System.out.println("IP地址:"+address.getHostAddress());
    }
}

运行结果:

Socket网络编程总结_第3张图片

 

 

—————————————————未完待续—————————————————————

你可能感兴趣的:(个人学习)