网络编程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地址:端口/项目名/资源
刚刚参加工作,很有很多不懂不会的,发现错误,欢迎指正,谢谢!
原文地址:https://www.cnblogs.com/xd-study/p/13032082.html