什么是SOCKET通信,看完马上明白

这篇具有很好参考价值的文章主要介绍了什么是SOCKET通信,看完马上明白。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Socket概述

Socket,即套接字。就两台主机之间逻辑连接的端点。(通俗来说:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)。

TCP/IP协议是传输层协议,主要解决数据如何在网络中传输

HTTP应用层协议,主要解决如何包装数据

Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。

二、Socket整体流程

Socket编程主要涉及到客户端服务端两个方面,首先是在服务器端创建一个服务器套接字
ServerSocket),并把它附加到一个端口上,服务器从这个端口监听连接。端口号的范围是0到
65536,但是0到1024是为特权服务保留的端口号,可以选择任意一个当前没有被其他进程使用的端口。

客户端(Socket)请求与服务器进行连接的时候,根据服务器域名或者IP地址,加上端口号打开一个套接字(也就是连接一个服务端)。当服务器接受连接后,服务器和客户端之间的通信就像输入输出流一样进行操作。

三、Socket原理图

什么是SOCKET通信,看完马上明白

四、Socket编程示例

 1.服务端:

public class ServerDemo {
  public static void main(String[] args) throws Exception {
    //1.创建一个线程池,如果有客户端连接就创建一个线程, 与之通信
    ExecutorService executorService = Executors.newCachedThreadPool();
    //2.创建 ServerSocket 对象
    ServerSocket serverSocket = new ServerSocket(9999);
    System.out.println("服务器已启动");
    while (true) {
      //3.监听客户端
      Socket socket = serverSocket.accept();
      System.out.println("有客户端连接");
      //4.开启新的线程处理
      executorService.execute(new Runnable() {
        @Override
        public void run() {
          handle(socket);
       }
     });
   }
 }
  public static void handle(Socket socket) {
    try {
      System.out.println("线程ID:" + Thread.currentThread().getId()
          + "  线程名称:" + Thread.currentThread().getName());
      //从连接中取出输入流来接收消息
      InputStream is = socket.getInputStream();
      byte[] b = new byte[1024];
      int read = is.read(b);
      System.out.println("客户端:" + new String(b, 0, read));
      //连接中取出输出流并回话
      OutputStream os = socket.getOutputStream();
      os.write("没钱".getBytes());
   } catch (Exception e) {
      e.printStackTrace();
   } finally {
      try {
        //关闭连接
        socket.close();
     } catch (IOException e) {
        e.printStackTrace();
     }
   }
 }
}

2.客户端:

public class ClientDemo {
  public static void main(String[] args) throws Exception {
    while (true) {
      //1.创建 Socket 对象
      Socket s = new Socket("127.0.0.1", 9999);
      //2.从连接中取出输出流并发消息
      OutputStream os = s.getOutputStream();
      System.out.println("请输入:");
      Scanner sc = new Scanner(System.in);
      String msg = sc.nextLine();
      os.write(msg.getBytes());
      //3.从连接中取出输入流并接收回话
      InputStream is = s.getInputStream();
      byte[] b = new byte[1024];
      int read = is.read(b);
      System.out.println("老板说:" + new String(b, 0, read).trim());
      //4.关闭
      s.close();
   }
 }
}

 文章来源地址https://www.toymoban.com/news/detail-433994.html

到了这里,关于什么是SOCKET通信,看完马上明白的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node实现 Socket 通信

            Socket通信,首先要知道 Socket 是什么,就是网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端被称为 socket ,举一个简单的例子就是两个人在线上进行聊天,即线上通信,那么socket通信的流程具体是怎样的?下面通过一张图来了解 socket 的通

    2023年04月17日
    浏览(36)
  • QT使用Socket通信

    QTcpServer用于TCP/IP通信, 作为服务器端套接字使用。 QTcpSocket用于TCP/IP通信,作为客户端套接字使用。 QUdpSocket用于UDP通信,服务器,客户端均使用此套接字。 创建套接字 将套接字设置为监听模式 等待并接受客户端请求 可以通过QTcpServer提供的void newConnection()信号来检测是否有

    2024年02月05日
    浏览(30)
  • socket实现tcp通信

    tcp的详细细节后面讲解,先来用它的一些接口实现1个简单的通信。下面来看它的一套接口 功能:socket()打开一个网络通讯端口,如果成功的话,就像open()一样返回一个文件描述符;应用程序可以像读写文件一样用read/write在网络上收发数据; 函数原型: 参数说明: domain:协议域又称

    2024年02月01日
    浏览(48)
  • socket是如何进行通信的

    Socket通信的原理大致分为以下几个步骤: 服务器端建立Socket,开始侦听整个网络中的连接请求。 当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。 当完成通信后,服务器关闭与客户端的Socket连接。 客户端的步骤如下: 建

    2024年02月04日
    浏览(40)
  • Unity学习之Socket通信

    简单的一对一通信,客户端向服务器传输字符串,具体操作如下: 在VisualStudio中创建一个新工程,在工程中编写服务器逻辑,代码如下: 在unity中创建一个脚本,即Client.cs,具体代码如下: 在Hierarchy面板中创建一个空的游戏对象,将Client脚本绑定在游戏对象上。创建的面板

    2024年02月12日
    浏览(32)
  • Linux——socket网络通信

    Socket套接字 由远景研究规划局(Advanced Research Projects Agency, ARPA)资助加里福尼亚大学伯克利分校的一个研究组研发。其目的是将 TCP/IP 协议相关软件移植到UNIX类系统中。设计者开发了一个接口,以便应用程序能简单地调用该接口通信。这个接口不断完善,最终形成了 Socket套

    2024年02月11日
    浏览(42)
  • 网络通信学习笔记之 ———Socket网络通信

    一、套接字 1、什么是套接字 ​ 套接字(socket)是一种通信机制,是通信的两方的一种约定,socket屏蔽了各个协议的通信细节, 对用户进程提供了一套可以统一、方便的使用TCP/IP协议的接口。这使得程序员无需关注协议本身,直 接使用socket提供的接口与不同主机间的进程互

    2024年02月08日
    浏览(45)
  • Android网络开发(一、Socket通信&HTTP通信)

      Socket:即套接字,其本身并不是一种通信协议,它是封装了TCP/IP、UDP 协议的API实现。在创建Socket对象后,底层会完成TCP/IP的三次握手等(UDP协议对应的API是DatagramSocket)。   在建立了Socket连接后,就可以和服务端进行Socket通信了。常用的Socket通信包含发送数据、接收数

    2024年02月12日
    浏览(68)
  • Python物联网开发-Python_Socket通信开发-Python与Tcp协议物联网设备通信-Socket客户端

            Python在物联网开发中的重要愈来愈重,因此,掌握Python语言与物联网设备之间的通信就显得尤为重要,可以通过编写Python程序实现获取物联网设备的传感器数值并可以更改物联网设备上的执行器状态。         首先,当使用Python进行Socket通信时,需要导入Python的so

    2024年02月17日
    浏览(67)
  • Linux网络编程:socket、客户端服务器端使用socket通信(TCP)

    socket(套接字),用于网络中不同主机间进程的通信。 socket是一个伪文件,包含读缓冲区、写缓冲区。 socket必须成对出现。 socket可以建立主机进程间的通信,但需要协议(IPV4、IPV6等)、port端口、IP地址。          (1)创建流式socket套接字。                 a)此s

    2024年02月11日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包