要求:客户端向服务端发送一串文字,服务端接受等待客户端的连接,连接成功之后接受客户端传输过来的信息,并将信息打印在控制台上

服务端

  1. public void server(){
  2. ServerSocket serverSocket = null;
  3. InputStream inputStream = null;
  4. try{
  5. // 创建一个服务端的 socket
  6. serverSocket = new ServerSocket(8888);
  7. // 接受一个客户端的连接
  8. Socket clientSocket = serverSocket.accept();
  9. // 获得客户端传入过来的文字的输入流
  10. inputStream = clientSocket.getInputStream();
  11. // 把输入流写到 buffer 中
  12. byte[] buffer = new byte[1024];
  13. ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  14. int len;
  15. while((len = inputStream.read(buffer)) != -1){
  16. byteArrayOutputStream.write(buffer,0,len);
  17. }
  18. System.out.println(byteArrayOutputStream);
  19. }catch (IOException e){
  20. e.printStackTrace();
  21. }finally {
  22. // 对需要关闭的连接资源进行手动关闭
  23. //noinspection DuplicatedCode
  24. if(serverSocket != null){
  25. try {
  26. serverSocket.close();
  27. } catch (IOException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. if(inputStream != null){
  32. try {
  33. inputStream.close();
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. }
  39. }

客户端

  1. public void client(){
  2. Socket socket = null;
  3. OutputStream outputStream = null;
  4. String str = "你好,服务端。我是客户端";
  5. try{
  6. // 创建一个 ip 地址对象
  7. InetAddress ip = InetAddress.getByName("127.0.0.1");
  8. // 创建一个客户端 socket
  9. socket = new Socket(ip,8888);
  10. // 创建一个输出流,用于数据的传出
  11. outputStream = socket.getOutputStream();
  12. outputStream.write(str.getBytes());
  13. }catch (IOException e){
  14. e.printStackTrace();
  15. }finally {
  16. // 对必要的连接进行手动关闭释放
  17. if(socket != null){
  18. try {
  19. socket.close();
  20. } catch (IOException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. if(outputStream != null){
  25. try {
  26. outputStream.close();
  27. } catch (IOException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. }
  32. }

运行

1、先启动服务端等待客户端的连接
image.png

2、启动服务端向客户端发送数据
image.png

3、服务端接受到数据并打印出来
image.png