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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值