java 网络编程-多人登录面向对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 网络编程-多人登录面向对象相关的知识,希望对你有一定的参考价值。

TCP:模拟登录 :多个客户端,先后等待

public class tcp 

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

    System.out.println("服务器启动中...");

    ServerSocket server=new ServerSocket(8888);
    boolean flag=true;

    while(flag) 
        Socket client=server.accept(); //一个客户端建立连接
        System.out.println("一个客户端建立了连接");
        new Thread(new channel(client)).start();

    


static class channel implements Runnable
    private Socket client;
    private DataInputStream dis; //输入流
    DataOutputStream dos;   //输出流
    public channel(Socket client)
    
        this.client=client;
        try 
            dis=new DataInputStream(client.getInputStream());
            dos=new DataOutputStream(client.getOutputStream());
         catch (IOException e) 
            e.printStackTrace();
            release();
        
    

    public void run()
    

        String uname="";
        String password="";
        String data=receive();
        String[] datas=data.split("&");

        uname=datas[0];
        password=datas[1];

        if(uname.equals("杜雨龙")&&password.equals("你最帅"))
        
            send("登陆成功");
        else
        
            send("登录失败");
        

        release();
    
//接收数据
private String receive()

    String data="";
    try 
        data = dis.readUTF();
     catch (IOException e) 

        e.printStackTrace();
    
    return data;


//发送数据
private void send(String msg)

    try 
        dos.writeUTF(msg);
        dos.flush();
     catch (IOException e) 
        e.printStackTrace();
    


//释放资源
private void release()

    try 
        if(null!=dis)
        
        dis.close();
        
     catch (IOException e) 
        e.printStackTrace();
    
    try 
        if(null!=dis)
        
        dos.close();
        
     catch (IOException e) 
        e.printStackTrace();
    
    try 
        if(null!=client)
        
        client.close();
        
     catch (IOException e) 
        e.printStackTrace();
    



客户端: 存储文件

public class tcp2 

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

    System.out.println("客户端启动中...");

    Socket client=new Socket("localhost",8888);

    //发送
    new send(client).sendto(name+"&"+password);
    new receive(client).receiveto();

    client.close();


static class send
    private Socket client;
    private DataOutputStream dos;
    private BufferedReader br;
    private String msg;
    public send(Socket client)
    
        this.client=client;
        br=new BufferedReader(new InputStreamReader(System.in));
        msg=init();
        try 
            dos =new DataOutputStream(client.getOutputStream());
         catch (IOException e) 
            e.printStackTrace();
        
    
    public void sendto()
    
        try 
            dos.writeUTF(msg);
            dos.flush();
         catch (IOException e) 
            e.printStackTrace();
        
    
    public String init()
    

        try 
            System.out.println("请输入用户名");
            String name=br.readLine();
            System.out.println("请输入密码");
            String password=br.readLine();
            return name+"&"+password;
         catch (IOException e) 

            e.printStackTrace();
        
        return null;
    


static class receive
    private DataInputStream dis;
    private Socket client;
    public receive(Socket client)
    
        this.client=client;
        DataInputStream dis=new DataInputStream(client.getInputStream());
    

    public void receiveto()
    
        String data;
        try 
            data = dis.readUTF();
            System.out.println(data);
         catch (IOException e) 
            e.printStackTrace();
        

    

以上是关于java 网络编程-多人登录面向对象的主要内容,如果未能解决你的问题,请参考以下文章

java 网络编程-TCP-多人聊天(面向对象封装)

JAVA面向对象编程课程设计——多人扫雷对战

java入门12--面向对象(上)

java入门12--面向对象(上)

java面向对象5

PHP面向对象