• 使用java实现一个hello/hi的简单的网络聊天程序


    学号:SA19225345

    参考资料来源https://github.com/mengning/net

    1 什么是Socket

      网络由下往上分为 物理层 、数据链路层 、 网络层 、 传输层 、 会话层 、 表现层 和 应用层。IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP协议是应用层协议,主要解决如何包装数据。
      socket,又称套接字,是在不同的进程间进行网络通讯的一种协议、约定或者说是规范。对于socket编程,它更多的时候像是基于TCP/UDP等协议做的一层封装或者说抽象,是一套系统所提供的用于进行网络通信相关编程的接口。

     2 工作原理

      通常服务器端需要先初始化socket,然后设定一个端口号,服务端不会主动向客户端发送请求,而是进入监听状态,等待客户端的连接请求,java中通过accept方法时阻塞处于监听状态的服务端进程。客户端要想向服务端发送连接请求,需要指定服务端的地址和端口号,初始化socket,然后申请连接,服务器接受申请并且回复申请许可(这里要涉及TCP三次握手连接),然后发送数据,最后关闭连接,这是一次交互过程。注意,socket连接成功后服务端和客户端可多次传输数据,并且服务端可以主动向客户端发送数据。

    3 Socket用法

      1)Socket 类

        Socket 类:该类实现客户端套接字,套接字指的是两台设备之间通讯的端点。 构造方法public Socket(String host, int port) :创建套接字对象并将其连接到指定主机上的指定端口号。如果指 定的host是null ,则相当于指定地址为回送地址。
        成员方法 :

             public InputStream getInputStream() : 返回此套接字的输入流。如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。 关闭生成的InputStream也将关闭相关的Socket。

        public OutputStream getOutputStream() : 返回此套接字的输出流。 如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。 关闭生成的OutputStream也将关闭相关的Socket。
        public void close() :关闭此套接字。 一旦一个socket被关闭,它不可再使用。 关闭此socket也将关闭相关的InputStream和OutputStream 。
        public void shutdownOutput() : 禁用此套接字的输出流。 任何先前写出的数据将被发送,随后终止输出流。
      2)ServerSocket类
      ServerSocket 类:这个类实现了服务器套接字,该对象等待通过网络的请求。

      构造方法

         public ServerSocket(int port) :使用该构造方法在创建ServerSocket对象时,就可以将其绑定到一个指定的端口号上,参数port就是端口号。

        构造举例,代码如下: ServerSocket server = new ServerSocket(6666);

      成员方法

        public Socket accept() :侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信。该方法
    会一直阻塞直到建立连接。

    4 程序实现

      服务端:

       客户端:

       运行结果:

      

     

  • 相关阅读:
    [20211108]索引分裂块清除日志增加(唯一索引)2.txt
    [20220104]in list 几种写法性能测试.txt
    [20211215]提示precompute_subquery补充.txt
    [20211217]滑稽可笑的程序代码2.txt
    SourceTree通过配置SSH来链接GitLab
    Docker在虚拟机中的安装
    .Net 6 Log4Net【.Net Core】
    es(elasticsearch)磁盘清理记录
    JSON 之 Jackson
    git FAQ
  • 原文地址:https://www.cnblogs.com/sovegetabable/p/11992251.html
Copyright © 2020-2023  润新知