zoukankan      html  css  js  c++  java
  • Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

    1. TCP协议发送数据 和 接收数据

    TCP协议接收数据:
     创建接收端的Socket对象
     监听客户端连接。返回一个对应的Socket对象
     获取输入流,读取数据显示在控制台
     释放资源

    TCP协议发送数据:

     创建发送端的Socket对象
     这一步如果成功,就说明连接已经建立成功了。
     获取输出流,写数据
    • 释放资源

    2. 代码实现:

    (1)发送端:

     1 package cn.itcast_06;
     2 
     3 import java.io.IOException;
     4 import java.io.OutputStream;
     5 import java.net.Socket;
     6 
     7 /*
     8  * TCP协议发送数据:
     9  * A:创建发送端的Socket对象
    10  *         这一步如果成功,就说明连接已经建立成功了11  * B:获取输出流,写数据
    12  * C:释放资源
    13  * 
    14  * 连接被拒绝。TCP协议一定要先开服务器15  * java.net.ConnectException: Connection refused: connect
    16  */
    17 public class ClientDemo {
    18     public static void main(String[] args) throws IOException {
    19         // 创建发送端的Socket对象
    20         // Socket(InetAddress address, int port)
    21         // Socket(String host, int port)
    22         // Socket s = new Socket(InetAddress.getByName("192.168.12.92"), 8888);
    23         Socket s = new Socket("192.168.12.92", 8888);
    24 
    25         // 获取输出流,写数据
    26         // public OutputStream getOutputStream()
    27         OutputStream os = s.getOutputStream();
    28         os.write("hello,tcp,我来了".getBytes());
    29 
    30         // 释放资源
    31         s.close();
    32     }
    33 }

    (2)接收端:

     1 package cn.itcast_06;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.net.ServerSocket;
     6 import java.net.Socket;
     7 
     8 /*
     9  * TCP协议接收数据:
    10  * A:创建接收端的Socket对象
    11  * B:监听客户端连接。返回一个对应的Socket对象
    12  * C:获取输入流,读取数据显示在控制台
    13  * D:释放资源
    14  */
    15 public class ServerDemo {
    16     public static void main(String[] args) throws IOException {
    17         // 创建接收端的Socket对象
    18         // ServerSocket(int port)
    19         ServerSocket ss = new ServerSocket(8888);
    20 
    21         // 监听客户端连接。返回一个对应的Socket对象
    22         // public Socket accept()
    23         Socket s = ss.accept(); // 侦听并接受到此套接字的连接。此方法在连接传入之前一直阻塞。(等待别人连接)
    24 
    25         // 获取输入流,读取数据显示在控制台
    26         InputStream is = s.getInputStream();
    27 
    28         byte[] bys = new byte[1024];
    29         int len = is.read(bys); // 阻塞式方法(等待传入数据)
    30         String str = new String(bys, 0, len);
    31 
    32         String ip = s.getInetAddress().getHostAddress();
    33 
    34         System.out.println(ip + "---" + str);
    35 
    36         // 释放资源
    37         s.close();
    38         // ss.close(); //这个不应该关闭
    39     }
    40 }

     

    3. TCP协议发送和接收数据图解: 

     

  • 相关阅读:
    问题:弹窗还没点击确认就执行了跳转
    关于版本的问题
    timeUtil
    使用jframe编写一个base64加密解密工具
    JMeter 命令行(非GUI模式)详解(一)-分布式(远程)执行脚本及查看指定结果、日志
    jmeter分布式压测 java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
    mysql5.7日志时间与系统时间不一致
    mysql查看执行sql语句的记录日志
    Appium如何获取appPackage和appActivity
    关于测试设置
  • 原文地址:https://www.cnblogs.com/hebao0514/p/4859616.html
Copyright © 2011-2022 走看看