首页 > 代码库 > Java socket字节流传输的示例

Java socket字节流传输的示例

服务端server端:

 

package com.yuan.socket;import java.io.*;import java.net.ServerSocket;import java.net.Socket;/** * Created by YUAN on 2016-09-17. */public class TalkServer4Byte {        private ServerSocket server;    private int port = 5020;    public TalkServer4Byte() {        try {            server = new ServerSocket(port);        } catch (IOException e) {        }    }    public void talk() {        System.out.println("监控端口:" + port);        Socket socket = null;        while (true) {            try {                // 阻塞等待,每接收到一个请求就创建一个新的连接实例                socket = server.accept();                System.out.println("连接客户端地址:" + socket.getRemoteSocketAddress());                // 装饰流BufferedReader封装输入流(接收客户端的流)                BufferedInputStream bis = new BufferedInputStream(                        socket.getInputStream());                DataInputStream dis = new DataInputStream(bis);                byte[] bytes = new byte[1]; // 一次读取一个byte                String ret = "";                while (dis.read(bytes) != -1) {                    ret += bytesToHexString(bytes) + " ";                    if (dis.available() == 0) { //一个请求                        doSomething(ret);                    }                }            } catch (IOException e) {                System.out.println(e.getMessage());            } finally {                try {                    socket.close();                } catch (IOException e) {                    System.out.println(e.getMessage());                }            }        }    }        public static void doSomething(String ret) {        System.out.println(ret);    }    public static String bytesToHexString(byte[] src) {        StringBuilder stringBuilder = new StringBuilder("");        if (src =http://www.mamicode.com/= null || src.length <= 0) {            return null;        }        for (int i = 0; i < src.length; i++) {            int v = src[i] & 0xFF;            String hv = Integer.toHexString(v);            if (hv.length() < 2) {                stringBuilder.append(0);            }            stringBuilder.append(hv);        }        return stringBuilder.toString();    }    public static String BytesHexString(byte[] b) {        String ret = "";        for (int i = 0; i < b.length; i++) {            String hex = Integer.toHexString(b[i] & 0xFF);            if (hex.length() == 1) {                hex = ‘0‘ + hex;            }            ret += hex.toUpperCase();        }        return ret;    }    public static void main(String[] args) {        TalkServer4Byte server = new TalkServer4Byte();        server.talk();    }}

 

 

 

客户端client代码:

 

package com.yuan.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.InetSocketAddress;import java.net.Socket;import java.net.SocketAddress;/** * Created by YUAN on 2016-09-17. */public class TalkClient4Byte {        private Socket socket;    private SocketAddress address;    public TalkClient4Byte() {        try {            socket = new Socket();            address = new InetSocketAddress("127.0.0.1", 5020);            socket.connect(address, 1000);        } catch (IOException e) {            e.printStackTrace();        }    }    public void talk() {        try {            //使用DataInputStream封装输入流            InputStream os = new DataInputStream(System.in);                        byte [] b = new byte[1];            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());            while (-1 != os.read(b)) {                dos.write(b); // 发送给客户端            }                        dos.flush();            dos.close();        } catch (IOException e) {            e.printStackTrace();        } finally {            try {                socket.close();            } catch (IOException e) {            }        }    }    public static void main(String[] args) {        TalkClient4Byte client = new TalkClient4Byte();        client.talk();    }}

 

Java socket字节流传输的示例