IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Java网络编程 -> 正文阅读

[网络协议]Java网络编程

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

第1层:字符缓冲输入流
第2层:字符转换输出流
第3层,字节输出流

getOutputStream,getInputStream都属于字节流

InputStream is = s.getInputStream();
        byte[] bys = new byte[1024];//先定义一个数组
        int len = is.read(bys);//将字节流的数据放到字节数组中 并给len一个长度
        String data = new String(bys,0,len);//将字节数组转换成一个字符串
        //字节流用字节数组byte[]实现,

字符串转发成字节数组 str.getbyte[] 字节数组转换成字符串 String s= new String(byte[])

udp发送数据

import java.io.IOException;
import java.net.*;

public class senddemo {
    public static void main(String[] args) throws IOException {
        //创建发送断的socket对象(DatagramSocket)
        //DatagramSocket()构造数据报套接字并将其绑定到本地主机上的任何可用端口
        DatagramSocket ds = new DatagramSocket();
        //创建数据,并把数据打包
        //构造一个数据包,发送长度为length的数据包到指定端口上
        byte[] bys = "Hello,zzh".getBytes();
//        int length = bys.length;
//        InetAddress address = InetAddress.getByName("192.168.1.12");
//        int port = 10086
        DatagramPacket dp = new DatagramPacket(bys,bys.length,InetAddress.getByName("192.168.1.12"),10086);

        ds.send(dp);
        ds.close();

    }
}

udp接受数据

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class recivedemo {
    public static void main(String[] args) throws IOException {
        //构造一个可以接受数据的数据报对象,并将其绑定到主机上的指定端口
        DatagramSocket ds = new DatagramSocket(10086);

        //创建一个数据包用于接受对象
        byte[] bys = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bys,bys.length);

        //调用DatagramSocket对象的方法接受对象
        ds.receive(dp);
        //解析数据包,并在控制台显示
        //byte[] getData()返回数据缓冲区
        byte[] datas = dp.getData();
        String dataString = new String(datas,0,dp.getLength());
        System.out.println("数据是"+dataString);
        ds.close();
    }
}

用自己输入的数据实现udp

public class senddemo {
    public static void main(String[] args) throws IOException {
        //创建发送断的socket对象(DatagramSocket)
        //DatagramSocket()构造数据报套接字并将其绑定到本地主机上的任何可用端口
        DatagramSocket ds = new DatagramSocket();

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line=bf.readLine())!=null) {

            if ("886".equals(line)){
                break;
            }
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("192.168.1.12"), 10086);
            ds.send(dp);
        }
        ds.close();

    }
}



public class recivedemo {
    public static void main(String[] args) throws IOException {
        //构造一个可以接受数据的数据报对象,并将其绑定到主机上的指定端口
        DatagramSocket ds = new DatagramSocket(10086);
        while (true) {
            //创建一个数据包用于接受对象
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);

            //调用DatagramSocket对象的方法接受对象
            ds.receive(dp);
            //解析数据包,并在控制台显示
            //byte[] getData()返回数据缓冲区
            byte[] datas = dp.getData();
            String dataString = new String(datas, 0, dp.getLength());
            System.out.println("数据是" + dataString);
        }
       // ds.close();
    }
}

tcp网络编程联系

import java.io.*;
import java.net.*;

public class senddemo {
    public static void main(String[] args) throws IOException {
        Socket s = new Socket("192.168.1.8", 10000);
        //获取输出流,写数据
        OutputStream os = s.getOutputStream();
        os.write("hello,tcp,我来了".getBytes());
        //接受服务器反馈
        InputStream is = s.getInputStream();
        byte[] bys = new byte[1024];
        int len = is.read(bys);
        String data = new String(bys,0,len);
        System.out.println("客户端"+data);
        //释放资源
        s.close();




import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class servedemo {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10000);
        //监听客户端连接
        Socket s = ss.accept();
        //获取输入流,读数据,并把数据显示在控制台
        InputStream is = s.getInputStream();

        byte[] bys= new byte[1024];
        int len = is.read(bys);

        String data = new String(bys,0,len);
        System.out.println("服务器"+data);
        //给出反馈
        OutputStream os = s.getOutputStream();
        os.write("数据已经收到".getBytes());
        ss.close();



    }
}


    }
}

练习2

public class senddemo {
    public static void main(String[] args) throws IOException {
        Socket s = new Socket("192.168.1.8",10000);
        //数据来自于键盘输入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //封装数据输出流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        String line;
        while((line = br.readLine())!=null){
            if("886".equals(line)){
                break;
            }
            //获取输出流对象
            //Outputstream os = s.getOutStream()
            //os.wirte(line.getBytes)
        bw.write(line);
            bw.newLine();
            bw.flush();
        }
    } 
} 


public class servedemo {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10000);
        //监听客户端连接
        Socket s = ss.accept();
        //获取输入流,读数据,并把数据显示在控制台
        BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
        String line;
        while((line = br.readLine())!=null){
            System.out.println(line);
        }
ss.close();

终结练习,给线程



import java.io.*;
import java.net.*;

public class senddemo {
    public static void main(String[] args) throws IOException {
        Socket s = new Socket("192.168.1.8",10000);
        //数据来自于文件输入
        BufferedReader br = new BufferedReader(new FileReader("a.txt"));
        //封装数据输出流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
        String line;
        while((line = br.readLine())!=null){
            bw.write(line);
            bw.newLine();
            bw.flush();
            }
        s.shutdownInput();
        //接受反馈
        BufferedReader bbr =new BufferedReader(new InputStreamReader(s.getInputStream()));
        String data = bbr.readLine();
        System.out.println("服务器的反馈是"+data);
        br.close();
        s.close();

        }

    }



import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class servedemo {
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10000);
        while (true) {
            Socket s = ss.accept();
            //为每一个客户端开启一个线程
            new Thread(new ServerThread(s)).start();
        }

        }

    }
     


import java.io.*;
import java.net.Socket;

public class ServerThread implements Runnable {
    private Socket s;
    public ServerThread(Socket s) {
        this.s = s;
    }

    @Override
    public void run() {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            //  BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
            //解决名称冲突问题
            int count = 0;
            File file = new File("myNet\\copy["+count+"].txt");
            while (file.exists()){
                count++;
                file = new File("myNet\\copy["+count+"].txt");
            }
            BufferedWriter bw = new BufferedWriter(new FileWriter(file));
            String line;
            while ((line = br.readLine())!=null){
                bw.write(line);
                bw.newLine();
                bw.flush();
            }
            BufferedWriter bbw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            bbw.write("文件上传成功");
            bbw.newLine();
            bbw.flush();
            s.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 13:04:03  更:2021-11-11 13:06:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:42:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码