zoukankan      html  css  js  c++  java
  • 网络编程02

    文件上传

    服务器端:

    public class TestServerDemo02 {
        public static void main(String[] args) throws Exception {
            //创建服务
            ServerSocket serverSocket = new ServerSocket(9000);
            //监听式客户端连接
            Socket socket = serverSocket.accept();//阻塞式监听,会一直等待客户端连接
            InputStream is = socket.getInputStream();
            FileOutputStream fos = new FileOutputStream(new File("E:\kuang\JavaSE\net\receive.gif"));
            //文件输出
            byte[] buffer = new byte[1024];
            int len;
            while ((len = is.read(buffer)) != -1){
                fos.write(buffer,0,len);
            }
    
            //通知客户端我已接收完毕
            OutputStream os = socket.getOutputStream();
            os.write("我已经接收完毕了,可以断开了!".getBytes());
            //关闭资源
            os.close();
            fos.close();
            is.close();
            socket.close();
            serverSocket.close();
        }
    }
    

    客户端:

    public class TestClientDemo02 {
        public static void main(String[] args) throws Exception {
            //1.创建一个Socket连接
            Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9000);
            //2.创建一个输出源
            OutputStream os = socket.getOutputStream();
            //3.读取文件
            FileInputStream fis = new FileInputStream(new File("E:\kuang\JavaSE\net\male.gif"));
            //4.写出文件
            byte[] buffer = new byte[1024];
            int len;
            while ((len = fis.read(buffer)) != -1){
                os.write(buffer,0,len);
            }
            //通知服务器,我已经结束了
            socket.shutdownOutput();//我已经传输完了
            //确定服务器接收完毕,才能断开连接
            InputStream is = socket.getInputStream();
            byte[] buffer2 = new byte[1024];
            int len2;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            while ((len2 = is.read(buffer2)) != -1){
                baos.write(buffer2,0,len2);
            }
            System.out.println(baos.toString());
            //5.关闭资源
            baos.close();
            is.close();
            fis.close();
            os.close();
            socket.close();
        }
    }
    

    1.7、UDP

    发短信:不需要连接,需要知道对方地址。

    发送端发送消息:


    public class UdpClientDemo01 {
        public static void main(String[] args) throws Exception {
            //建立一个Socket连接
            DatagramSocket socket = new DatagramSocket();
            //建一个包
            String msg = "好好学习,天天向上";
            InetAddress inetAddress = InetAddress.getByName("localhost");
            int port = 9099;
            //数据的长度始末 发送给谁
            DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, inetAddress, port);
            //发送包
            socket.send(packet);
            //关闭流
            socket.close();
        }
    }
    

    接收端接收消息:

    //需要等待客户端连接
    public class UdpServerDemo01 {
        public static void main(String[] args) throws Exception {
            //建立连接
            DatagramSocket socket = new DatagramSocket(9099);
            //接收数据包
            byte[] buffer = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
            socket.receive(packet);//阻塞接收
            System.out.println(new String(packet.getData()));
            socket.close();
        }
    }
    

    咨询

    循环发送:

    public class UdpSenderDemo01 {
        public static void main(String[] args) throws Exception {
            DatagramSocket socket = new DatagramSocket(8888);
            while (true){
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                String msg = reader.readLine();
                byte[] datas = msg.getBytes();
                DatagramPacket packet = new DatagramPacket(datas,0,datas.length,
                        new InetSocketAddress("localhost",6666));
                socket.send(packet);
                if (msg.equals("bye")){
                    break;
                }
            }
            socket.close();
        }
    }
    

    循环接收:

    public class UdpServiceDemo01 {
        public static void main(String[] args) throws Exception {
            DatagramSocket socket = new DatagramSocket(6666);
            while (true){
                byte[] buffer = new byte[1024];
                DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
                socket.receive(packet);//阻塞式接收包裹
                System.out.println(new String(packet.getData()));
                if (packet.getData().equals("bye")){
                    break;
                }
            }
            socket.close();
        }
    }
    

    在线咨询,两个都可以是发送方,也可以是接收方!

    1.8、URL

    https://www.baidu.com/

    同意资源定位符:定位资源的,定位互联网上的每个资源。

    DNS域名解析:https://www.baidu.com/ xx.xx.xx.xx


    协议://ip地址:端口/项目名/资源
    
    刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
  • 相关阅读:
    ruby html解析器
    国外cdn
    ruby爬虫utf8编码相关
    Ruby 1.9 regex (named capture group)正则名组
    ruby爬虫综述
    ruby新加实例方法写法
    机房
    Net::HTTP Cheat Sheet
    ror一键安装包forwin
    病毒6655.la
  • 原文地址:https://www.cnblogs.com/xd-study/p/13032082.html
Copyright © 2011-2022 走看看