login和downloadImage网络编程范例

来源:互联网 发布:白银公司大数据公司 编辑:程序博客网 时间:2024/06/18 07:23

public class LoginClinet {

public static void main(String[] args) throws IOException {         Socket socket = new Socket(InetAddress.getLocalHost(),9090);    //获取socket的输出流对象    OutputStreamWriter  socketOut = new OutputStreamWriter(socket.getOutputStream());    //获取到socket的输入流对象    BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));    //获取到键盘的输入流对象    BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));    while(true){        System.out.println("请选择功能: A(登陆)  B(注册)");        String option = keyReader.readLine();        if("a".equalsIgnoreCase(option)){            getInfo(socketOut, keyReader, option);            //读取服务器反馈的信息            String line = socketReader.readLine();            System.out.println(line);        }else if("b".equalsIgnoreCase(option)){            getInfo(socketOut, keyReader, option);            //读取服务器反馈的信息            String line = socketReader.readLine();            System.out.println(line);        }    }}public static void getInfo(OutputStreamWriter  socketOut,BufferedReader keyReader, String option)        throws IOException {    System.out.println("请输入用户名:");    String userName = keyReader.readLine();    System.out.println("请输入密码:");    String password = keyReader.readLine();    String info = option +" "+userName+" "+password+"\r\n";    socketOut.write(info);    socketOut.flush();}

}

package cn.itcast.tcp;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Properties;

public class LoginServer extends Thread {

Socket socket;static File file = new File("F:\\users.properties");public LoginServer(Socket socket) {    this.socket = socket;}static {    try {        if (!file.exists()) {            file.createNewFile();        }    } catch (IOException e) {        e.printStackTrace();    }}@Overridepublic void run() {while(true){        try {            // 获取socket的输入流对象            BufferedReader bufferedReader = new BufferedReader(                    new InputStreamReader(socket.getInputStream()));            // 获取socket的输出流对象            OutputStreamWriter socketOut = new OutputStreamWriter(                    socket.getOutputStream());            // 读取客户端输入的信息            String info = bufferedReader.readLine();            String[] datas = info.split(" ");            // 获取到用户 的选择功能            String option = datas[0];            // 注册            String userName = datas[1];            String password = datas[2];            if ("a".equalsIgnoreCase(option)) {                // 登陆                Properties properties = new Properties();                // 加载配置文件                properties.load(new FileReader(file));                if (properties.containsKey(userName)) {                    String tempPass = properties.getProperty(userName);                    if (password.equals(tempPass)) {                        socketOut.write("欢迎" + userName + "登陆成功\r\n");                    } else {                        socketOut.write("密码错误\r\n");                    }                } else {                    socketOut.write("用户名不存在,请重新输入...\r\n");                }                socketOut.flush();            } else if ("b".equalsIgnoreCase(option)) {                // 创建一个配置文件类                Properties properties = new Properties();                //加载原来的配置文件                properties.load(new FileReader(file));                if (!properties.containsKey(userName)) {                    // 不存在该用户名                    properties.setProperty(userName, password);                    // 生成一个配置文件                    properties.store(new FileWriter(file), "users");                    socketOut.write("注册成功..\r\n");                } else {                    // 存在用户名                    socketOut.write("用户名已经被注册,请重新输入\r\n");                }                socketOut.flush();            }        } catch (Exception e) {            e.printStackTrace();        }    }}public static void main(String[] args) throws IOException {    ServerSocket serverSocket = new ServerSocket(9090);    while (true) {        Socket socket = serverSocket.accept();        new LoginServer(socket).start();    }}

}

package cn.itcast.tcp;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//下载图片的客户端
public class ImageClient {

public static void main(String[] args) throws Exception{    //建立tcp的服务    Socket socket = new Socket(InetAddress.getLocalHost(),9090);    //获取socket的输入流对象    InputStream inputStream = socket.getInputStream();    //获取文件的输出流对象    FileOutputStream fileOutputStream = new FileOutputStream("F:\\3.jpg");    //边读边写    byte[] buf = new byte[1024];    int length = 0 ;     while((length = inputStream.read(buf))!=-1){        fileOutputStream.write(buf,0,length);    }    //关闭资源    fileOutputStream.close();    socket.close();}

}

package cn.itcast.tcp;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;

/*
1. 编写一个服务端可以给多个客户端发送图片。 (多线程)

*/
public class ImageServer extends Thread {

Socket socket ;//使用该集合是用于存储ip地址的。static HashSet<String> ips = new HashSet<String>();public  ImageServer(Socket socket) {    this.socket = socket;}@Overridepublic void run() {    try {        //获取到socket输出流对象        OutputStream outputStream = socket.getOutputStream();        //获取图片的输入流对象        FileInputStream fileInputStream = new FileInputStream("F:\\美女\\3.jpg");        //读取图片数据,把数据写出        byte[] buf = new byte[1024];        int length = 0 ;         while((length = fileInputStream.read(buf))!=-1){            outputStream.write(buf,0,length);        }        String ip = socket.getInetAddress().getHostAddress();   // socket.getInetAddress() 获取对方的IP地址        if(ips.add(ip)){            System.out.println("恭喜"+ip+"同学成功下载,当前下载的人数是:"+ ips.size());        }        //关闭资源        fileInputStream.close();        socket.close();    }catch (IOException e) {    }}public static void main(String[] args) throws IOException {    //建立tcp的服务 ,并且要监听一个端口    ServerSocket serverSocket  = new ServerSocket(9090);    while(true){        //接受用户的链接。        Socket socket = serverSocket.accept();        new ImageServer(socket).start();    }}

}

原创粉丝点击