Java 网络通信 — BIO通信例子

来源:互联网 发布:csv导入oracle数据库 编辑:程序博客网 时间:2024/05/22 17:22
package top.yuyufeng.test;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;/** * created by yuyufeng on 2017/8/18. */public class TestTcpServer {    // 服务端    public static void main(String[] args) {        ServerSocket ss = null;        Socket s = null;        InputStream is = null;        OutputStream os = null;        try {            ss = new ServerSocket(8989);            while (true) {                try {                    s = ss.accept();                    is = s.getInputStream();                    byte[] b = new byte[100];                    int len;                    while ((len = is.read(b)) != -1) {                        String str = new String(b, 0, len);                        System.out.print(str);                    }                    os = s.getOutputStream();                    os.write("我是服务端\n".getBytes());                } catch (IOException e) {                    e.printStackTrace();                } finally {                    if (os != null) {                        try {                            os.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                    if (is != null) {                        try {                            is.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                    if (s != null) {                        try {                            s.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }            }        } catch (IOException e) {            e.printStackTrace();        } finally {            if (ss != null) {                try {                    ss.close();                } catch (IOException ioe) {                    ioe.printStackTrace();                }            }        }    }}


package top.yuyufeng.test;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.InetAddress;import java.net.ServerSocket;import java.net.Socket;import java.net.UnknownHostException;/** * created by yuyufeng on 2017/8/18. */public class TestTcpClient {    // 客户端    public static void main(String[] args) {        Socket socket = null;        OutputStream os = null;        InputStream is = null;        try {            socket = new Socket(InetAddress.getByName("127.0.0.1"), 8989);            os = socket.getOutputStream();            os.write("我是客户端\n".getBytes());            // shutdownOutput():执行此方法,显示的告诉服务端发送完毕            socket.shutdownOutput();            is = socket.getInputStream();            byte[] b = new byte[100];            int len;            while ((len = is.read(b)) != -1) {                String str = new String(b, 0, len);                System.out.print(str);            }        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        } finally {            if (is != null) {                try {                    is.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (os != null) {                try {                    os.close();                } catch (IOException e) {                    e.printStackTrace();                }            }            if (socket != null) {                try {                    socket.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }}