programación de red java, TCP, UDP, URL

Utilice la comunicación de Socket para leer y almacenar información de los estudiantes

Implementación de TCP

Programa de servidor

/*
 *采用多线程的方式,使用时先开启服务器
*/
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerThread implements Runnable{
    
    

    private Socket socket;

    public ServerThread(Socket socket){
    
    
        this.socket = socket;
    }

    @Override
    public void run() {
    
    

        try {
    
    
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());

            User user = (User)ois.readObject();
            System.out.println(user.getLoginId()+"    "+user.getLoginPwd());
            String answer;

            if("qqq".equals(user.getLoginId()) && "qqq".equals(user.getLoginPwd()))
                answer = "登陆成功";
            else
                answer = "登录失败";

            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

            bw.write(answer);
            bw.flush();
            bw.close();
            ois.close();
            socket.close();

        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
        }
    }
}


//服务器测试程序
import java.net.ServerSocket;
import java.net.Socket;

public class TestService {
    
    

    public static void main(String[] args) {
    
    

        try {
    
    
            ServerSocket ss = new ServerSocket(8888);

            while(true){
    
    
                Socket socket =ss.accept();

                Thread thread = new Thread(new ServerThread(socket));

                thread.start();

            }

        } catch (Exception e) {
    
    
            e.printStackTrace();
        } finally {
    
    
        }
    }

}



Cliente

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Scanner;

public class TestClientOne {
    
    

    public static void main(String[] args) {
    
    

        Scanner input = new Scanner(System.in);

        User user = new User();

        System.out.println("请输入账号:");
        user.setLoginId(input.next());
        System.out.println("请输入密码:");
        user.setLoginPwd(input.next());

        try {
    
    

            Socket socket = new Socket("127.0.0.1",8888);
            ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());

            oos.writeObject(user);
            oos.flush();

            socket.shutdownOutput();

            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String answer = br.readLine();

            if("succesful".equals(answer))
                System.out.println("登陆成功");
            else
                System.out.println("登录失败");

            br.close();
            oos.close();
            socket.close();

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

usuario

import java.io.Serializable;

public class User implements Serializable {
    
    

    private static final long serialVersionUID = 9016951163266064174L;
    private String LoginId;
    private String LoginPwd;

    public User() {
    
    
    }

    public User(String loginId, String loginPwd) {
    
    
        LoginId = loginId;
        LoginPwd = loginPwd;
    }

    public static long getSerialVersionUID() {
    
    
        return serialVersionUID;
    }

    public String getLoginId() {
    
    
        return LoginId;
    }

    public void setLoginId(String loginId) {
    
    
        LoginId = loginId;
    }

    public String getLoginPwd() {
    
    
        return LoginPwd;
    }

    public void setLoginPwd(String loginPwd) {
    
    
        LoginPwd = loginPwd;
    }

    @Override
    public String toString() {
    
    
        return "User{" +
                "LoginId='" + LoginId + '\'' +
                ", LoginPwd='" + LoginPwd + '\'' +
                '}';
    }
}

Implementación de UDP

Remitente

//发送端
public class Send {
    
    

    public static void main(String[] args) throws IOException {
    
    
//创建socket
        DatagramSocket socket = new DatagramSocket();  //数据、来源,不会放到socket中,放到DatagramPacket数据报中

//封装数据报
        String data = "通过UDP方式发送数据";
        byte[] bytes = data.getBytes();  //字符串转化为字节数组

        InetAddress inet =InetAddress.getLocalHost();
        //创建DatagramPacket包时,需要说明发送数据的字节数组,接受的长度,端口号
        DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length,inet,8888); //需要同byte数组的方式发送数据

//通过socket发送数据报
        socket.send(packet);
        socket.close();
    }
}

Extremo de recepción

public class Rceive {
    
    
    public static void main(String[] args) throws IOException {
    
    

        DatagramSocket socket = new DatagramSocket(8888);  //数据、来源,不会放到socket中,放到DatagramPacket数据报中

        byte[] bytes = new byte[1024];
        DatagramPacket packet = new DatagramPacket(bytes,0,bytes.length);

        socket.receive(packet); //接收到数据报的文件

        System.out.println(new String(packet.getData(),0,packet.getLength()));

        socket.close();
    }
}

URL

Descargar imágenes en línea por URL

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;

public class URLTest {
    
    

    public static void main(String[] args){
    
    

        HttpURLConnection urlConnection = null;//获取到关于服务器的一个链接
        InputStream inputStream = null;
        FileOutputStream fos = null;
        try {
    
    
            URL url = new URL("http://m.imeitou.com/uploads/allimg/2020111109/mzv1lm34vw3.jpg");

            urlConnection = (HttpURLConnection) url.openConnection();

            urlConnection.connect(); //获取链接,访问服务器上的地址

            inputStream = urlConnection.getInputStream();

            fos = new FileOutputStream("C:\\Users\\Pictures\\javadown1.jpg");

            byte[] data = new byte[1024000]; //这个值太小下载的图片不清晰
            int index;
            if((index = inputStream.read(data)) != -1){
    
    
                fos.write(data,0,index);
            }
            fos.flush();

        } catch (IOException e) {
    
    
            e.printStackTrace();
        } finally {
    
    
            if(fos != null) {
    
    
                try {
    
    
                    fos.close();
                } catch (IOException e) {
    
    
                    e.printStackTrace();
                }
            }

            if(inputStream != null) {
    
    
                try {
    
    
                    inputStream.close();
                } catch (IOException e) {
    
    
                    e.printStackTrace();
                }
            }
            if(urlConnection != null)
                urlConnection.disconnect();
        }
    }
}



Supongo que te gusta

Origin blog.csdn.net/qq_38705144/article/details/110096856
Recomendado
Clasificación