bianle
7/7/2016 - 6:32 AM

java socket demo

java socket demo

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.StringReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Sender {

    static int port = 2426;

    public static void sendMsg(String ip, String msg) throws UnknownHostException, IOException {
        Socket clt = new Socket(ip, port);
        PrintWriter os = new PrintWriter(clt.getOutputStream());

        BufferedReader is = new BufferedReader(new StringReader(msg));

        while ((msg = is.readLine()) != null) {
            os.println(msg);
        }
        os.close();
        is.close();
        clt.close();

    }

    public static void sendFile(String ip, String filePath) throws UnknownHostException, IOException {
        Socket clt = new Socket(ip, port);
        OutputStream os = clt.getOutputStream();
        File file = new File(filePath);
        FileInputStream is = new FileInputStream(file);
        long fileLen = file.length();
        long sentLen = 0l;
        int per = 0;
        String fileName = file.getName();
        System.out.print("File : " + fileName + " is Uploading : ");
        byte[] buff = new byte[1024];
        int len = -1;
        while ((len = is.read(buff)) != -1) {
            sentLen += len;
            per = (int) (sentLen / fileLen) * 100;
            if (per > 10 && per % 10 == 0) {
                System.out.print("+");
            }

            os.write(buff, 0, len);
        }
        os.close();
        is.close();
        clt.close();

    }

    public static void main(String[] args) throws UnknownHostException, IOException {
        String ip = args[0];
        String file = args[1];
        sendFile(ip, file);
    }
}
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class Receiver {
    public static String savePath = "msg";

    public static String getIps() throws SocketException {
        List ip4s = new ArrayList();
        Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
        while (nis.hasMoreElements()) {
            NetworkInterface ni = nis.nextElement();
            Enumeration<InetAddress> ias = ni.getInetAddresses();
            while (ias.hasMoreElements()) {
                InetAddress ia = ias.nextElement();
                String ip = ia.getHostAddress();
                if (!"127.0.0.1".equals(ip) && ip.matches("^\\d+\\.\\d+\\.\\d+\\.\\d+$")) {
                    ip4s.add(ip);
                }
            }
        }
        String ips = "";
        for (int i = 0; i < ip4s.size(); i++) {
            ips += ip4s.get(i);
            if (i != ip4s.size() - 1) {
                ips += " , ";
            }
        }
        return ips;
    }

    public static void fileReceiver() throws IOException, SocketException {
        ServerSocket srv = new ServerSocket(2426);
        String ip = getIps();
        System.out.println("Server listenning " + ip + "[ " + 2426 + "]");
        while (true) {
            Socket so = srv.accept();
            InputStream is = so.getInputStream();
            File file = new File(savePath);
            if (!file.exists()) {
                file.mkdirs();
            }
            file = new File(file, new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
            FileOutputStream fo = new FileOutputStream(file);
            byte[] buff = new byte[1024];
            int len = -1;
            while ((len = is.read(buff)) != -1) {
                fo.write(buff, 0, len);
            }
            fo.close();
            is.close();
            so.close();
        }
    }

    public static void main(String[] args) throws IOException {
        fileReceiver();
    }
}