• 与网络开发相关的API


    java面向的是 浏览器/服务器 开发。B/S
    C/S结构:客户端对服务端    //需要设置一个客户端。如简单的网络聊天室,qq、微信、LOL。
    B/S结构:浏览器对服务器    //通用的,不需要单独的设置一个客户端了。
    浏览器和服务器必须遵循HTTP协议进行交互,使用TCP来进行服务器和浏览器来建立连接

    我们是写服务端的,上层应用层协议指的是http协议,而底下走的传输协议是TCP协议

    java.net.Socket封装了TCP通讯协议的操作细节。java中想完成TCP协议通讯就依靠这个API即可。使用它与服务端连接后,通过操作两个流即可完成与服务端的数据交换。

    实际上通讯是指两台计算机应用程序之间互相发送数据
    通过ip找到对应的具体哪一台计算机,通过端口号找到的对应的具体哪一个应用程序 。

    就跟客户像10086打电话一样,10086号码理解为是ip地址;打通后按不同数字号提供不同服务理解为端口号。

    Socket类

    java.net.Socket
    使用它进行 客户端对服务端连接操作

    构造器

    Socket socket = new Socket("localhost",8088)  //参数分别为 1.服务端的IP地址,如果服务端为本地可写localhost 2.服务端的服务端口号。实例化的过程就是连接的过程 若连接失败,会抛出服务器积极拒绝异常

    API

    OutputStream getOutputStream()   //该方法可以获取一条字节输出流,通过这个流写出的数据会被发送给远端(例如服务端)
    OutputStream是一个所有字节输出流的父类,是一个抽象类,虽然用OutputStream接收 但是返回一定是某个子类。不需要关心接受的实际子类是什么,只要返回的是个输出流就行了

    InetAddress address getInetAddress()  //获取远端计算机地址信息。

    String getHostAddress()   //是InetAddress类的方法,以字符串形式获取远端计算机IP地址  如:127.0.0.1

    ServerSocket类

    java.net.ServerSocket
    使用它进行 服务端对客户端连接

    运行再服务端的java.net.ServerSocket 主要有两个作用

    1.向系统申请服务端口,客户端就是通过该端口与服务端建立连接的
    2.监听服务端口,一旦客户端发起连接则会自动的创建一个Socket套接字与该客户端进行交互

    构造器

    serverSocket = new ServerSocket(8088) //参数为向系统申请的端口号,端口号被占用则抛出地址被使用的异常

    API

    Socket accept( )   //是一个阻塞方法,调用后就开始等待客户端的连接 ,直到一个客户端连接,那么该方法会返回一个Socket。服务端可以通过这个Socket与刚建立连接的客户端进行交互,如果想要多个客户端连接 需要多次调用accept 这时就需要用到多线程了。

    InputStream getInputStream( )   //获取一条字节输入流 同上

    若想要连接多个客户端,就要用到多线程。
    思路是 :客户端连接服务器以后,服务器可以拿到一个Socket,然后创建一个线程,把Socket交给这个线程
    这个时候这个线程跑起来就单独运行了,就像当于客户端和这个线程在交互。就不影响服务器在调用accept,等待下一个客户端连接了。

  • 相关阅读:
    python input函数
    linux可用内存判断
    python if-elif-else 判断
    python if判断
    python使用range()函数创建数字列表list
    python range函数
    python语法缩进
    python for循环
    python列表删除和排序
    hbctf 父亲的信
  • 原文地址:https://www.cnblogs.com/zqf-bczl/p/13753667.html
Copyright © 2020-2023  润新知