网络编程

网络编程涉及IP、端口号和通信协议。IP地址包括IPv4和IPv6,端口号分为公认、注册和动态/私有。Socket是IP和端口的组合,用于描述网络通信。TCP的Socket通信包括服务端和客户端的交互过程,而UDP通信则无需预先建立连接。网络协议如TCP、UDP确保数据传输。URL编程用于定位网络资源。
摘要由CSDN通过智能技术生成

网络编程

(1)概述

网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。

实现网络中的主机通信

1.通信双方的地址:IP、端口号

2.一定的规则:网络通信协议(OSI参考模型、TCP、IP协议)

(2)IP和端口号

IP地址:对应InetAddress类,一个对象代表一个IP地址;

  • IP地址唯一标识Internet上的计算机
  • 本地回环地址为(hostAddress):127.0.0.1
  • 本地主机名(hostName):localhost

IP地址分类

IPV4:4个字节组成

IPV6:16个字节,写成8个整数,每个整数用4位十六进制数表示,数之间用冒号隔开(X:X:X:X:X:X:X:X,X=_ _ _ _)

也可以分为

公网地址:万维网使用

私有地址:局域网使用,192.168开头,范围是0.0——255.255

InetAddress

InetAddress类,一个对象代表一个IP地址;

InetAddress inetAddress=InetAddress.getByName("127.0.0.1");

getByName(String host)//InetAddress类中的静态方法,获得IP地址对象
getLocalHost()//静态方法,获取本地IP地址

//常用方法(非静态)
getHostAddress()//获取本地地址
getHostName()//获取本地域名

InetAddress常用方法

序号 方法描述
1 static InetAddress getByAddress(byte[] addr) 在给定原始 IP 地址的情况下,返回 InetAddress 对象。
2 static InetAddress getByAddress(String host, byte[] addr) 根据提供的主机名和 IP 地址创建 InetAddress。
3 static InetAddress getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。
4 String getHostAddress() 返回 IP 地址字符串(以文本表现形式)。
5 String getHostName() 获取此 IP 地址的主机名。
6 static InetAddress getLocalHost() 返回本地主机。
7 String toString() 将此 IP 地址转换为 String。

域名

www.baidu.com

本地回路地址

127.0.0.1 对应localhost

端口号

  • 标识正在计算机上运行的进程;
  • 不同的进程对应不同的端口号;
  • 端口地址是16比特,可以有在0—65535范围内的端口号;

端口分类

1.公认端口:0——1023,系统的保留端口,程序尽可能别使用这些端口;

2.注册端口:1024——49151

3.动态/私有端口:49152——65515

特定的端口号:MySQl 3306;Tomcat 8080

(3)Socket

IP地址和端口号的组合得到一个网络套接字:Socket;

Socket(套接字)用来描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发送请求或者应答网络请求;

Socket是支持TGP/IP协议的网络通信的基本操作单元,是对网络通信过程中端点的抽象表示,包含了进行网络通信所必须的五种信息:

1.连接所使用的协议;

2.本地主机的IP地址;

3.本地远程的协议端口;

4.远地主机的IP地址;

5.远地进程的协议端口;

Socket通信模型

img

Socket通信实例

public class ServerDemo extends Thread {
   //服务端
    private ServerSocket serverSocket;
    public ServerDemo(int port) throws IOException{
   
        serverSocket=new ServerSocket(port);
        serverSocket.setSoTimeout(10000);
    }

    @Override
    public void run() {
   
        while (true){
   
            try {
   
                System.out.println("等待远程连接,端口号为:"+serverSocket.getLocalPort());
                Socket server=serverSocket.accept();
                System.out.println("远程主机地址:"+server.getRemoteSocketAddress());
                DataInputStream dataInputStream=new DataInputStream(server.getInputStream());
                System.out.println(dataInputStream.readUTF());
                DataOutputStream dataOutputStream=new DataOutputStream(server.getOutputStream());
                dataOutputStream.writeUTF("连接成功"+server.getLocalSocketAddress()+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值