• Java连载126-Socket详解


    一、Socket

    1.Socket构造方法

    构造方法说明
    Socket() 该创建的对象,没有指定IP地址和端口号,意味着只创建了客户端对象,并且没有连接任何服务器。通过该构造方法创建对象后还需要调用connect(SocketAddress endpoint)方法,才能完成与指定服务器端的连接,其中参数endpoint用于封装IP地址和端口号
    Socket(String host,int port) 使用该构造方法在创建Socket对象时会根据参数去连接在指定地址和端口上运行的服务器程序,其中host接收的是一个字符串类型的IP地址
    Socketa(InetAddress address,int port) 该构造方法在使用上与第二个构造方法类似,参数address用于接受一个InetAddress类型的对象,该对象用于封装一个IP地址。

    2.Socket常用方法

    方法说明
    int getPort() 返回一个int类型对象,该对象是Socket对象与服务器连接的端口号。
    InetAddress getLocalAddress() 获取Socket对象绑定的本地IP地址,并且IP地址封装InetAddress类型的对象返回
    void close() 关闭Socket连接,结束本次通信。关闭Socket之前,应将与Socket相关的所有输入流全部关闭,这是因为一个良好的程序应该在执行完毕时释放所有的资源。
    InputStream getInputStream() 返回一个InputStream类型的输入流对象。如果该对象是由服务器端的Socket返回的,就用于读取客户端发送的数据;反之,就用于读取服务器端发送的数据。
    OutputStream getOutputStream() 返回一个OutputStream类型的输出流对象。如果该对象是由服务器端的Socket返回的,就用于向客户端发送数据;反之,就用于向服务器端发送数据。
    package com.bjpowernode.java_learning;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.net.Socket;
    
    public class D126_1_Socket {
     public static void main(String[] args) {
      Socket client_socket = null;
      DataInputStream in = null;
      DataOutputStream out = null;
      String ip = "127.0.0.1";      //服务器IP地址
      int port = 5050;              //服务器端口
      try {
       client_socket = new Socket(ip,port);          //与服务器建立连接
       in = new DataInputStream(client_socket.getInputStream());   //创建输入流
       out = new DataOutputStream(client_socket.getOutputStream()); //创建输出流
       out.writeUTF("你好,我是客户机A");
       System.out.println("客户机启动,向服务器发送信息:你好,我是客户机A");
       String str = in.readUTF();//等待读取服务器响应的信息,进入阻塞状态
       System.out.println("服务器端的响应信息:"+str);
      }catch (Exception e) {
       System.out.println(e);
      }finally {
       try{
        in.close();//关闭网络连接
        out.close();
        client_socket.close();
       }catch(Exception e) {
        
       }
      } 
     }
    }


    运行结果: 126.1 释义

    • 该程序首先创建了绑定5050端口的服务器端Socket,并进行连接监听。如果有连接请求,则创建Socket连接,并且建立输入流对象和输出对象。通过输入流对象读取客户端发来的内容,通过输出流对象向客户端发送相对内容。

    二、源码:

  • 相关阅读:
    运行VCK190的A72的Linux
    【分享】MPSoC UBoot下SD/eMMC卡的验证
    【分享】在MPSoC上运行基于eglfs_kms的QT应用程序
    大数据运维(67)pytorch安装及基本使用(win10+CPU+Python3.6)
    大数据运维(66)PyTorch GPU环境配置及安装
    Java多线程学习-AQS
    Java多线程学习:(wait,notify)--(await,signal)--(park,unpark)
    LeetCode52. N皇后 II
    LeetCode51. N 皇后
    LeetCode417. 太平洋大西洋水流问题
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13216974.html
Copyright © 2020-2023  润新知