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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import java.io.*; import java.net.*; import java.util.*; import java.lang.*; public class Server extends ServerSocket { private static ArrayList User_List = new ArrayList(); private static ArrayList Threader = new ArrayList(); private static LinkedList Message_Array = new LinkedList(); private static int Thread_Counter = 0; private static boolean isClear = true; protected static final int SERVER_PORT = 10000; protected FileOutputStream LOG_FILE = new FileOutputStream( "d:/connect.log", true); public Server() throws FileNotFoundException, IOException { super(SERVER_PORT); // append connection log // Calendar now = Calendar.getInstance(); // String str = "[" + now.getTime().toString() + // "] Accepted a connection"; // byte[] tmp = str.getBytes(); // LOG_FILE.write(tmp); try { Socket socket = accept(); while (true) { new ServerReaderThread(socket); new ServerWriterThread(socket); } } finally { close(); } } public static void main(String[] args) throws IOException { new Server(); } // --- CreateServerThread class ServerReaderThread extends Thread { private Socket client; private BufferedReader in; private PrintWriter out; private String Username; public ServerReaderThread(Socket s) throws IOException { client = s; in = new BufferedReader(new InputStreamReader(client .getInputStream())); out = new PrintWriter(client.getOutputStream(), true); start(); } public void run() { try { int flag = 0; Thread_Counter++; String line = in.readLine(); while (!line.equals("bye")) { out.println(line); line = in.readLine(); } out.println("--- See you, bye! ---"); // System.out.println("--- See you, bye! ---"); client.close(); } catch (IOException e) { } finally { try { client.close(); } catch (IOException e) { } Thread_Counter--; } } } // --- CreateServerThread class ServerWriterThread extends Thread { priva

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值