当前位置: 首页 > article >正文

Socket套接字

Socket工作原理。服务器端通过bind绑定socket,一直监听端口。 当客户端通过conncet方法连接指定计算机的端口,并使用send()向socket中写入信息。

生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输 层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

发送是 send方法,接收时accept()方法

JavaAPI实现socket通信。

Receive

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Receiver {
    public static void main(String[] args) throws Exception {
        Socket socket = null;
        ServerSocket serverSocket = new ServerSocket(5000);
        socket = serverSocket.accept(); //线程会被阻塞,一直进入等待状态。
              // 获取与客户端连接的输入流
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        String message = null;
        while ((message = in.readLine()) != null) {  //从流中读取消息
            System.out.println(message);
        }
    }
}

发送方:

import java.io.PrintWriter;

import java.net.Socket;
import java.util.Scanner;

public class Send {
    public static void main(String[] args) throws Exception {
        //创建连接  连接远程的 localhost 和5000 端口
        Socket socket = new Socket("localhost", 5000);
        //两个管道建立连接
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        Scanner sc = new Scanner(System.in);  //输入流
        while (true) {
            String mess = sc.next();
            //通过out.println()讲消息写给远程
            out.println(mess);
        }
    }
}

发送和接收消息

在这里插入图片描述

计算机通信的过程


参考文章:

https://blog.csdn.net/luzhensmart/article/details/81838193


http://www.kler.cn/a/465413.html

相关文章:

  • MYSQL--------选择合适的数据类型
  • 什么情况会导致JVM退出?
  • MIPI_DPU 综合(DPU+MIPI+Demosaic+VDMA 通路)
  • 【MySQL基础篇】三、表结构的操作
  • MyBatis-plus sql拦截器
  • 设计模式之桥接设计模式
  • Celeborn和HDFS、YARN混合部署
  • 算法 Class 006(二分搜索)
  • SQL 基础教程 - SQL ORDER BY 关键字
  • 华为的数字化转型框架和数字化转型成熟度评估方法
  • 在C语言中使用伪终端与bash交互
  • MATLAB 车牌自动识别系统设计 图像分割与图像增强方法 车牌识别
  • linux网络 | 深度学习http的相关概念
  • k8s基础(2)—Kubernetes-Namespace
  • JAVA学习笔记_Redis进阶
  • 【数据仓库金典面试题】—— 包含详细解答
  • SQL Server导出和导入可选的数据库表和数据,以sql脚本形式
  • UML之关联
  • 【数据结构】双向循环链表的使用
  • springboot集成阿里云短信服务
  • CentOS — 目录管理
  • 瑞_Linux中部署配置Java服务并设置开机自启动
  • 软件工程期末大复习(三)
  • 图像相似性计算
  • 小程序用户体验优化策略:提升用户留存与活跃度
  • 关于电话的正则表达式