网络编程总结--小码哥java

基本概念
套接字:源IP地址和目标IP地址以及源端口号和目标端口号的组合成为套接字。其用于标识客户端请求的服务器和服务
网络编程:通过使用套接字来达到进程间通信目的的编程
IP:在互联网中定位是哪一台主机
port(端口):在某一台主机中唯一表示某个程序,所以在同一台电脑重,端口是不能相同的

进程间的通信:
1.在同一台电脑重,A进程和B进程相互通信
2.在网络中(外网/内网),A电脑中的aa程序和B电脑中的bb程序相互通信(有网络连接)

网络编程的API在java.net包中

网络编程的三要素:IP地址,端口,协议(数据传递/交互的规则)

Socket:此类实现客户端套接字,套接字是两台机器间通信的端点

IP
网络之间互连的协议,在java中使用InetAddress类表示
IP的版本:IPv4,IPv6
IP地址编址方案:将IP空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为主播和保留使用
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
InetAddress.getLocalHost();//返回本机IP
InetAddressgetLocalHost().isReachable(1000);是否可以连接访问,1000毫秒为等待时间

端口
端口可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。

协议
网络协议的简称,是通信计算机双方必须共同遵从的一组约定,如:怎么建立连接,怎么互相识别,只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、语序
(1)语法:数据与控制信息的结构或格式
(2)语义:需要发出何种控制信息,完成何种动作以及做出何种响应
(3)时序:时间顺序的详细说明

http--超文本传输协议
https--用安全套接字层传送的超文本传输协议
ftp--文件传输协议
mailto--电子邮件地址
file--当地电脑或网上分享的文件

物理层:以太网、调制解调器
数据链路层:DTM、STP
网络层协议:ICMP、IGMP
传输层协议:TCP、UDP
应用层协议:HTTP、SMTP

**URL和URI的区别**
URI:表示统一资源定位的描述符,可以简单理解为:就是一个网络地址,不能进行操作
URL:表示统一资源定位符

网络上的数据的编码和解码操作:
URLEncoder:编码
URLDecoder:解码
String msg="测试string";
String str=URLEncoder.encode(msg,"UTF-8");//编码
msg=URLDecoder.decode(str,"UTF-8");解码

网络编码的两种协议
TCP、UDP
TCP:面向连接(经历三次握手)、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多时间和系统资源
UDP:面向非连接、传输不可靠(丢包【数据丢失】)、用于传输少量数据(数据包模式)、速度快

TCP简单程序
服务端

public class Server{
    public static void main(String []args) throws Exception
    {
        String data="这是服务端的响应信息";
        ServerSocket server=new ServerSocket(8081);
        while(true)
        {
            Socket client=server.accept();
            System.out.println("客户端的端口为"+client.getInetAddress());
            PrintStream out=new PrintStream(client.getOutputStream);
            out.println(data);
            out.close();
        }
    }
}

客户端

public class Client{
    public static void main(String) throws Exception{
        Socket client=new Socket("localhost",8081);
        Scanner sc=new Scanner(Client.getInputStream);
        while(sc.hasNextLine){
            String line=sc.nextLine();
            System.out.println(line);
        }
        sc.close();
        client.close();
    }
}

UDP简单程序
接收端

public class Receive{
        //创建接收对象
        DatagramSocket receiver=new DatagramSocket(10000);
        byte []buffer=new byte[1024];
        //接收数据
        DatagramPacket dp=new DatagramPacket(buffer,1024);
        receiver.receive(dp);
        //获取接收数据
        String msg=new String(dp.getData(),0,dp.getLength());
        System.out.println("发送过来的数据"+msg);      
    }
}

发送端

public class Send(){
    public static void main(String []args) throws Exception{
        String data="这是发送到接收端的数据"//创建发送端对象
        DatagramSocket sender = new DatagramSocket(10001);
        //发送数据
        DatagramPacket dp=new DatagramPacket(data.getBytes(),
        data.getBytes().length,//发送数据的长度(字节数)
        InetAddress.getLocalHost(),//发送给哪一个IP
        10000);//发送给哪一个端口程序
        sender.send(dp);
        sender.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值