本机socket通信(Java

来源:互联网 发布:windows错误报告 进程 编辑:程序博客网 时间:2024/06/06 23:54

本机两进程的socket通信

啊啊啊啊,终于撸出来了...C++导包都快疯掉,果断换Java


这是服务器

package wjoker;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;public class Server {public static final int PORT = 12345;//监听的端口号       public static void main(String[] args) {          System.out.println("服务器启动...\n");          Server server = new Server();          server.init();      }        public void init() {          try {              ServerSocket serverSocket = new ServerSocket(PORT);              while (true) {                  // 一旦有堵塞, 则表示服务器与客户端获得了连接                  Socket client = serverSocket.accept();                  // 处理这次连接                  new HandlerThread(client);              }          } catch (Exception e) {              System.out.println(e.getMessage());          }      }        private class HandlerThread implements Runnable {          private Socket socket;          public HandlerThread(Socket client) {              socket = client;              new Thread(this).start();          }            public void run() {              try {                  // 读取客户端数据                  DataInputStream input = new DataInputStream(socket.getInputStream());                String clientInputStr = input.readUTF();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException                // 处理客户端数据                  System.out.println("客户端:" + clientInputStr);                    // 向客户端回复信息                  DataOutputStream out = new DataOutputStream(socket.getOutputStream());                  System.out.print("请输入:\t");                  // 发送键盘输入的一行                  String s = new BufferedReader(new InputStreamReader(System.in)).readLine();                  out.writeUTF(s);                                  out.close();                  input.close();              } catch (Exception e) {                  System.out.println(e.getMessage());              } finally {                  if (socket != null) {                      try {                          socket.close();                      } catch (Exception e) {                          socket = null;                          System.out.println(e.getMessage());                      }                  }              }         }      }  }  


这是客户端


package wjoker;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.net.Socket;public class Client {public static final String IP_ADDR = "localhost";//服务器地址 public static final int PORT = 12345;//服务器端口号      public static void main(String[] args) {          System.out.println("客户端启动...");                  while (true) {          Socket socket = null;        try {        //创建一个流套接字并将其连接到指定主机上的指定端口号        socket = new Socket(IP_ADDR, PORT);                            //读取服务器端数据              DataInputStream input = new DataInputStream(socket.getInputStream());              //向服务器端发送数据              DataOutputStream out = new DataOutputStream(socket.getOutputStream());              System.out.print("请输入: \t");              String str = new BufferedReader(new InputStreamReader(System.in)).readLine();              out.writeUTF(str);                            String ret = input.readUTF();               System.out.println("服务器端返回过来的是: " + ret);                                      out.close();            input.close();        } catch (Exception e) {        System.out.println(e.getMessage());         } finally {        if (socket != null) {        try {socket.close();} catch (IOException e) {socket = null; System.out.println(e.getMessage()); }        }        }        }      }  }  

最后,荆轲刺秦王,啦啦啦~晚安

0 0
原创粉丝点击