栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 网络编程学习笔记11.23

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 网络编程学习笔记11.23

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,

通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,

实现资源共享和信息传递的计算机系统.

目的是什么

传播交流信息,数据交换,通信

需要什么

IP和端口号

网络通讯协议


IP地址

ip地址:InetAddress

唯一定位一台网络上的计算机

IP地址的分类:

ipv4 / ipv6

                IPV4 127.0.0.1,四个字节组成,0~255,分布不均匀

                IPV6 2001: 0bb2: aaaa: 0012: 1231: ffff,128位,8个无符号整数

公网(互联网)-私网(局域网)

使用:   

没有构造器,只能通过静态方法返回值

定义一个InetAddress对象,等于一个IP地址.


端口        

端口用来区分软件.0~65535,不同的进程有不同的端口号.

协议分为TCP与UDP,单个协议下,端口号不能冲突

端口分为公有端口0~1023,程序注册端口2014~49151,动态与私有端口


通信协议

元素:速率,传输码率,代码结构,传输控制

TCP/IP协议簇(实际上是一组协议)

        TCP用户传输协议

                (打电话,连接稳定,三次握手,四次挥手)

                (传输完成,释放连接,效率低)

        UDP用户数据报协议

                (发短信,不连接,不稳定)

                (无论对方如何,都发过去)


TCP(客户端与服务端)

服务端创建服务,然后接受传过来的socket

public class server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);//建立服务
            Socket socket = serverSocket.accept();//可以认为是传过来的socket

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端创建连接

public class client {
    public static void main(String[] args) {
        try {
            InetAddress ia = InetAddress.getByName("127.0.0.1");
            int port = 9999;
            Socket socket = new Socket(ia,port);//连接服务器
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
TCP实现聊天

服务端

public class server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);//创建服务
            Socket socket = serverSocket.accept();//可以认为是传过来的socket

            //以下为IO流操作
            InputStream is = socket.getInputStream();
            //byte[] buffer = new byte[1024];
            
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len;
            while((len=is.read(buffer))!=-1){
                baos.write(buffer,0,len);//继续把2进制文件写到baos流中
            }
            System.out.println(baos.toString());

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端

public class client {
    public static void main(String[] args) {
        try {
            InetAddress ia = InetAddress.getByName("127.0.0.1");
            int port = 9999;
            Socket socket = new Socket(ia,port);//连接服务

            //以下为IO流操作
            OutputStream os = socket.getOutputStream();//指定对象
            os.write("HelloWorld".getBytes(StandardCharsets.UTF_8));//写入信息
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

UDP

不需要连接服务器

客户端发包

public class UdpClient {
    public static void main(String[] args) throws Exception{
        //建立一个Socket
        DatagramSocket socket =new DatagramSocket();
        //建立一个包
        String msg = "你好";
        InetAddress ia = InetAddress.getByName("127.0.0.1");
        int port = 9090;
        DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,ia,port);
        //发送包
        socket.send(packet);
    }
}

服务端接包

public class UdpServer {
    public static void main(String[] args) throws Exception{
        DatagramSocket socket = new DatagramSocket(9090);

        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
        socket.receive(packet);

        socket.close();
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591768.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号