JAVA网络编程

什么是ip地址

互联网协议特有的一种地址

由4段8位的二进制组成的,因为读写不方便所一转换成了10进制,取值范围是1-255

什么是网络地址

标识计算机或者网络设备所在的网段

什么是主机地址

标识特定主机或者网络的设备

ip分类

分类网络地址数量主机地址数量前8位的取值范围作用子网掩码
A131-126大量主机而局域网络数量较少的大型网络255.0.0.0
B22128-191国际性大公司和政府机构255.255.0.0
C31192-223内网255.255.255.0
D244-239广播地址
E240-255保留

cmd命令查看ip地址

ipconfig

测试网络是否通畅

ping www.baidu.com

域名

.biz .com .edu .gov .info .int .mil .name .net .org .pro .xyz

.cn是中国大陆

IP地址和域名是一一对应的,加入因特网的各级网络依照域名服务器的命名规则对本网内的计算机命名,并在通信时负责完成域名到各IP地址的转换。由属于美国国防部的国防数据网络通信中心( DINNIO)负责因特网最高层域名的注册和管理,同时它还负责IP地址的分配工作。域名由两种基本类型组成:以机构性质命名的域和以国家地区代码命名的域。常见的以机构性质命名的域一般由三个字符组成

DNS域名解析

DNS服务器是完成ip地址到域名转换的服务器

IPV4与IPV6的区别

描述ipv4ipv6
地址长度为 32 位(4 个字节)。地址由网络和主机部分组成,这取决于地址类。根据地址的前几位,可定义各种地址类:A、B、C、D 或 E。IPv4 地址的总数为 4 294 967 296。IPv4 地址的文本格式为 nnn.nnn.nnn.nnn,其中 0<=nnn<=255,而每个 n 都是十进制数。可省略前导零。最大打印字符数为 15 个,不计掩码。长度为 128 位(16 个字节)。基本体系结构的网络数字为 64 位,主机数字为 64 位。通常,IPv6 地址(或其部分)的主机部分将派生自 MAC 地址或其他接口标识。根据子网前缀,IPv6 的体系结构比 IPv4 的体系结构更复杂IPv6 地址的数目比 IPv4 地址的数目大 1028(79 228 162 514 264 337 593 543 950 336)倍。IPv6 地址的文本格式为 xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx,其中每个 x 都是十六进制数,表示 4 位。可省略前导零。可在地址的文本格式中使用一次双冒号(::),用于指定任意数目的 0 位。例如,::ffff:10.120.78.40 表示 IPv4 映射的 IPv6 地址

子网掩码

作用,就是将某个IP地址划分成网络地址和主机地址两部分

网络通信协议

描述依赖常见协议
物理层物理设备,比如网线底层网络协议
数据链路层物理网络上接受到的帧底层网络协议
网络层路由选择ip
传输层端口对端口tcp可靠无差错的连接、数据安全 udp传输的快
应用层应用服务元素(SASE)和一个或多个公用应用服务元素(CASE)HTTP FTP

Socket

简介

传输层进行端到端的通信 连接的端点就叫做socket(套接字)ip地址+端口号

基于TCP协议的Socket编程

用到的类

java.net包

Socket ServerSocket DatagramPacket

常用方法

Scoket类
Socket(InetAddress address, int port)
创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
Socket(String host, int port)
创建一个流套接字并将其连接到指定主机上的指定端口号。
Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程地址上的指定远程端口。
Socket(String host, int port, InetAddress localAddr, int localPort)
创建一个套接字并将其连接到指定远程主机上的指定远程端口。
close()
关闭此套接字。
connect(SocketAddress endpoint)
将此套接字连接到服务器。
connect(SocketAddress endpoint, int timeout)
将此套接字连接到服务器,并指定一个超时值。
getInetAddress()
返回套接字连接的地址。
getInputStream()
返回此套接字的输入流。
getLocalPort()
返回此套接字绑定到的本地端口。
getOutputStream()
返回此套接字的输出流。
getPort()
返回此套接字连接到的远程端口
shutdownOutput()
关闭输出
ServerSocket类
ServerSocket(int port)
创建绑定到特定端口的服务器套接字。
accept()
侦听并接受到此套接字的连接。
getInetAddress()
返回此服务器套接字的本地地址

步骤

  1. 建立连接

  2. 打开关联的输入输出流

  3. 数据流中读写信息

  4. 关闭所有的数据流和Scoket

//服务端
try {
        //建立一个服务器Socket(ServerSocket)指定端口并开始监听
        ServerSocket serverSocket=new ServerSocket(8800);
        //使用accept()方法等待客户端触发通信
        Socket socket=serverSocket.accept();
        //打开输入输出流
        InputStream is=socket.getInputStream();
        //获取客户端信息,即从输入流读取信息
        BufferedReader br=new BufferedReader(new InputStreamReader(is,"utf-8"));
        String info=null;
        while(!((info=br.readLine())==null)){
            System.out.println("我是服务器,客户登录信息为:"+info);
        }           
        //关闭资源
        br.close(); 
        is.close();
        socket.close();
        serverSocket.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
//客户端
 try {
            //建立客户端Socket连接,指定服务器的位置以及端口
            Socket socket=new Socket("localhost",8800);
            //打开输入输出流
            OutputStream os=socket.getOutputStream();
            //发送客户端登录信息,即向输出流写入信息
            String info="用户名:Tom;用户密码:123456";
            os.write(info.getBytes());
            //关闭资源
            os.close();
            socket.close();
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值