• 在Java中使用io实现TCP协议编程


    在Java中实现TCP协议编程_冯东昆的博客-CSDN博客_java实现tcp协议 

    1. package io;
    2. import java.io.BufferedReader;
    3. import java.io.BufferedWriter;
    4. import java.io.IOException;
    5. import java.io.InputStream;
    6. import java.io.InputStreamReader;
    7. import java.io.OutputStreamWriter;
    8. import java.net.ServerSocket;
    9. import java.net.Socket;
    10. public class TcpServer{
    11. public static void main(String[] args) {
    12. System.out.println("监听请求中...");
    13. BufferedWriter brout = null;
    14. BufferedReader brin = null;
    15. try (
    16. // 1.建立服务器socket
    17. ServerSocket ss = new ServerSocket(9009);
    18. // 2.调用accept()
    19. Socket s = ss.accept();){
    20. System.out.println(s.getInetAddress().getHostAddress()+ "...connection");
    21. // 读取客户的信息的输入流
    22. InputStream in = s.getInputStream();
    23. brin = new BufferedReader(new InputStreamReader(in));
    24. // 向客户端发送信息输出流,服务端向客户端返回信息OutputStreamWriter()
    25. brout = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
    26. String line = null;
    27. while ((line=brin.readLine()) != null) {
    28. System.out.println("client:" + line);
    29. brout.write(line.toUpperCase());//服务器端收到信息后,将信息转为大写返回给客户端toUpperCase()
    30. brout.newLine();
    31. brout.flush();
    32. }
    33. } catch (IOException e) {
    34. e.printStackTrace();
    35. } finally {
    36. if(brout!=null) {
    37. try {
    38. brout.close();
    39. } catch (IOException e) {
    40. e.printStackTrace();
    41. }
    42. }
    43. if(brin!=null) {
    44. try {
    45. brin.close();
    46. } catch (IOException e) {
    47. e.printStackTrace();
    48. }
    49. }
    50. }
    51. }
    52. }
    1. package io;
    2. import java.net.Socket;
    3. import java.io.*;
    4. public class TcpClient{
    5. public static void main(String[] args) {
    6. try (
    7. // 1.建立tcp客户端socket,要确定要连接的服务器ip,port
    8. Socket s = new Socket("127.0.0.1", 9009);
    9. // 2.通过建立的socket,获取输出流对象
    10. // 数据输出给服务器端
    11. OutputStream out = s.getOutputStream();
    12. BufferedWriter bwout = new BufferedWriter(new OutputStreamWriter(out));
    13. // 获取服务器端返回的数据
    14. // 读取服务器端发过来的信息InputStreamReader()
    15. BufferedReader brin = new BufferedReader(new InputStreamReader(s.getInputStream()));
    16. // 获取键盘录入
    17. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));){
    18. String line = null;
    19. while ((line = br.readLine()) != null) {
    20. if (line.equals("over")) {
    21. break;
    22. }
    23. bwout.write(line);
    24. bwout.newLine();
    25. bwout.flush();
    26. String str = brin.readLine();
    27. System.out.println("server:" + str);
    28. }
    29. } catch(IOException e) {
    30. e.printStackTrace();
    31. }
    32. }
    33. }

  • 相关阅读:
    vue(十三)——vue3新特性之组合式api(一)
    [野火]STM32 F103 HAL库开发实战指南笔记总结
    精选30个大模型高频面试题
    伤停等待(wound-wait)在分布式事务中
    Nginx 配置Nextjs和SpringBoot项目的https并解决跨域问题
    【Rust 日报】2022-11-06 二维码生成工具
    Python datetime,try-except-else-finally
    uniapp使用Vue2框架生成二维码
    【Android进阶】4、UI状态的保存和恢复
    springboot使用mybatis
  • 原文地址:https://blog.csdn.net/yiguang_820/article/details/126244195