Java之Socket编程

开发步骤

在这里插入图片描述
实例
Sever:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.Properties;

public class Sever {
    
    
    public static void main(String[] args) {
    
    

        try {
    
    
            ServerSocket sever=new ServerSocket(8888);

            //接入客户端
            Socket client1=sever.accept();

            //获得请求对象
            BufferedReader request=new BufferedReader(new InputStreamReader(client1.getInputStream(),"UTF-8"));

            //接收客户端请求数据
            String userinfo=request.readLine();

            String result=SaveUserInfo(userinfo);

            //获得响应对象
            PrintWriter response=new PrintWriter(new OutputStreamWriter(client1.getOutputStream(),"UTF-8"));

            //将操作结果相应给客户端
            response.println(result);
            response.flush();


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

    }

    private static String SaveUserInfo(String userinfo) {
    
    
        try {
    
    
            //创建流执行一个properities而文件
            PrintWriter out=new PrintWriter(new OutputStreamWriter(new FileOutputStream("information\\userinfo.properties",true),"GBK"));

            //解析出id的值作为=前的key、直接将userInof代表的字符串作为=后面的value
            String id=getId(userinfo);

            //保存用户信息到文件中去
            Properties prop=new Properties();
            prop.setProperty(id,userinfo);
            prop.store(out,"");

            System.out.println("保存完毕");

            System.out.println(id);
        } catch (FileNotFoundException e) {
    
    
            e.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        return "Successfully";
    }

    private static String getId(String userinfo) {
    
    
        int startindex=userinfo.indexOf(":")+1;
        int endindex=userinfo.indexOf(",");
        return userinfo.substring(startindex,endindex);
    }
}

Client:

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

public class Client {
    
    
    private static final Scanner input=new Scanner(System.in);
    public static void main(String[] args) throws IOException {
    
    

        Socket client=new Socket("192.168.1.8",8888);
        try {
    
    

            //收集信息
            String userinfo=registMenu();
            System.out.println(userinfo);

            //获取请求对象
            PrintWriter request=new PrintWriter(new OutputStreamWriter(client.getOutputStream(),"UTF-8"));

            //向服务器发送请求
            request.println(userinfo);
            request.flush();

            //获得响应结果
            BufferedReader response=new BufferedReader(new InputStreamReader(client.getInputStream(),"UTF-8"));
            String result=response.readLine();
            System.out.println(result);

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

    }

    /**
     *收集用户信息
     * @return 整理后的字符串
     */
    public static String registMenu(){
    
    
        System.out.println("请输入学号:");
        String id=input.next();

        System.out.println("请输入密码:");
        String pwd=input.next();

        System.out.println("请输入名字:");
        String name=input.next();

        System.out.println("请输入性别:");
        String sex=input.next();

        System.out.println("请输入年龄:");
        Integer age=input.nextInt();

        System.out.println("请输入成绩:");
        Double score=input.nextDouble();

        //整理(约定---》协议)
        return toJASN(id,pwd,name,sex,age,score);
    }

    /**
     * 将零三数据整成一个有格式的字符串
     * @param id
     * @param pwd
     * @param name
     * @param sex
     * @param age
     * @param score
     * @return
     */

    public static String toJASN(String id, String pwd, String name, String sex, Integer age, Double score){
    
    

        String json="{id:"+id+",pwd:"+pwd+",name:"+name+",sex:"+sex+",age:"+age+",score:"+score+"}";
        return json;
    }
}

猜你喜欢

转载自blog.csdn.net/LLY_A_/article/details/107723101