zoukankan      html  css  js  c++  java
  • socket双向通信

    客户端

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
     
    public class Client {
        public static void main(String[] args) {
            Socket socket = null;
            BufferedReader in = null;
            BufferedWriter out = null;
            BufferedReader wt = null;
            try {
                //创建Socket对象,指定服务器端的IP与端口
                socket = new Socket(InetAddress.getLocalHost(), 8888);
                //获取scoket的输入输出流接收和发送信息
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new BufferedWriter(new 
                                       OutputStreamWriter(socket.getOutputStream()));
                wt = new BufferedReader(new InputStreamReader(System.in));
                while (true) {
                    //发送信息
                    String str = wt.readLine();
                    out.write(str + " ");
                    out.flush();
                    //如果输入的信息为“end”则终止连接
                    if (str.equals("end")) {
                        break;
                    }
                    //否则,接收并输出服务器端信息
                    System.out.println("服务器端说:" + in.readLine());
                }
            catch (UnknownHostException e) {
                e.printStackTrace();
            catch (IOException e) {
                e.printStackTrace();
            finally {
                // 关闭资源
                if (out != null) {
                    try {
                        out.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (wt != null) {
                    try {
                        wt.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (socket != null) {
                    try {
                        socket.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }


    服务端

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
     
    public class Server {
        public static void main(String[] args){
            Socket socket = null;
            BufferedReader in = null;
            BufferedWriter out = null;
            BufferedReader br = null;
            try {
                //创建服务器端套接字:指定监听端口
                ServerSocket server = new ServerSocket(8888);
                //监听客户端的连接
                socket = server.accept();
                //获取socket的输入输出流接收和发送信息
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                out = new BufferedWriter(new 
                                       OutputStreamWriter(socket.getOutputStream()));
                br = new BufferedReader(new InputStreamReader(System.in));
                while (true) {
                    //接收客户端发送的信息
                    String str = in.readLine();
                    System.out.println("客户端说:" + str);
                    String str2 = "";
                    //如果客户端发送的是“end”则终止连接 
                    if (str.equals("end")){
                        break;
                    }
                    //否则,发送反馈信息
                    str2 = br.readLine(); // 读到 为止,因此一定要输入换行符!
                    out.write(str2 + " ");
                    out.flush();
                }
            catch (IOException e) {
                e.printStackTrace();
            finally {
                //关闭资源
                if(in != null){
                    try {
                        in.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(out != null){
                    try {
                        out.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(br != null){
                    try {
                        br.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(socket != null){
                    try {
                        socket.close();
                    catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }




  • 相关阅读:
    Hadoop(1.2.1)安装
    ETL,BPM与ESB三者的一些感悟
    编程上面的理论支撑
    TreeSet类的排序
    List接口
    Map接口
    类和对象
    面向对象1
    IO流4
    Java面向对象
  • 原文地址:https://www.cnblogs.com/timeboy/p/9464432.html
Copyright © 2011-2022 走看看