Socket编程基础之服务端与客户端简单通信

灰太狼 2022-08-09 02:11 331阅读 0赞

服务端代码如下:

  1. /**
  2. *
  3. */
  4. package com.baoxiu123.net;
  5. import java.io.BufferedReader;
  6. import java.io.BufferedWriter;
  7. import java.io.IOException;
  8. import java.io.InputStreamReader;
  9. import java.io.OutputStreamWriter;
  10. import java.net.ServerSocket;
  11. import java.net.Socket;
  12. /**
  13. * @author ping
  14. * @createtime 2015-10-4下午11:49:15
  15. * @function 服务端
  16. */
  17. public class MySocketServer {
  18. private int serverPort;
  19. private ServerSocket serverSocket;
  20. private Socket socket;
  21. public static void main(String[] args) {
  22. MySocketServer socketServer = new MySocketServer();
  23. socketServer.start();
  24. }
  25. private void start() {
  26. serverPort = 9898;
  27. try {
  28. serverSocket = new ServerSocket(serverPort);
  29. System.out.println("server started...");
  30. while (true) {
  31. socket = serverSocket.accept();
  32. manageConection(socket);
  33. }
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. } finally {
  37. try {
  38. socket.close();
  39. serverSocket.close();
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }
  45. private void manageConection(Socket socket) {
  46. new Thread(new Runnable() {
  47. private BufferedReader reader;
  48. private BufferedWriter writer;
  49. @Override
  50. public void run() {
  51. System.out.println("client :" + socket.hashCode() + " connedted" + " remote port:" + socket.getPort());
  52. try {
  53. reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  54. writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
  55. String receivedMsg;
  56. while ((receivedMsg = reader.readLine()) != null) {
  57. System.out.println("client " + socket.hashCode() + " :" + receivedMsg);
  58. writer.write("server reply:" + receivedMsg + "\n");
  59. writer.flush();
  60. }
  61. } catch (IOException e) {
  62. e.printStackTrace();
  63. } finally {
  64. try {
  65. reader.close();
  66. writer.close();
  67. } catch (IOException e) {
  68. e.printStackTrace();
  69. }
  70. }
  71. }
  72. }).start();
  73. }
  74. }

客户端代码如下:

  1. /**
  2. *
  3. */
  4. package com.test.net;
  5. import java.io.BufferedReader;
  6. import java.io.BufferedWriter;
  7. import java.io.IOException;
  8. import java.io.InputStreamReader;
  9. import java.io.OutputStreamWriter;
  10. import java.net.Socket;
  11. /**
  12. * @author ping
  13. * @createtime 2015-10-4下午11:49:15
  14. * @function 客户端
  15. */
  16. public class MySocketClient {
  17. private String serverIp = "127.0.0.1";
  18. private int serverPort = 9898;
  19. private Socket socket;
  20. private BufferedWriter writer;
  21. private BufferedReader inputReader;
  22. private BufferedReader reader;
  23. public static void main(String[] args) {
  24. MySocketClient socketClient = new MySocketClient();
  25. socketClient.start();
  26. }
  27. private void start() {
  28. try {
  29. socket = new Socket(serverIp, serverPort);
  30. System.out
  31. .println("connected at " + serverIp + " server port"
  32. + socket.getPort() + " local port:"
  33. + socket.getLocalPort());
  34. reader = new BufferedReader(new InputStreamReader(
  35. socket.getInputStream()));
  36. writer = new BufferedWriter(new OutputStreamWriter(
  37. socket.getOutputStream()));
  38. startServerReplyListener(reader);
  39. inputReader = new BufferedReader(new InputStreamReader(System.in));
  40. String inputString;
  41. while (!(inputString = inputReader.readLine()).equals("bye")) {
  42. writer.write(inputString + "\n");
  43. writer.flush();
  44. }
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. } finally {
  48. try {
  49. socket.close();
  50. writer.close();
  51. reader.close();
  52. inputReader.close();
  53. } catch (IOException e) {
  54. e.printStackTrace();
  55. }
  56. }
  57. }
  58. private void startServerReplyListener(final BufferedReader reader) {
  59. new Thread(new Runnable() {
  60. public void run() {
  61. String replyStr;
  62. try {
  63. while ((replyStr = reader.readLine()) != null) {
  64. System.out.println(replyStr);
  65. }
  66. } catch (IOException e) {
  67. e.printStackTrace();
  68. }
  69. }
  70. }).start();
  71. }
  72. }

自己运行起来,并在客户端发一条消息,截图如下:

先是服务端开启:
Center

其次是客户端截图如下:

Center 1

发表评论

表情:
评论列表 (有 0 条评论,331人围观)

还没有评论,来说两句吧...

相关阅读