博客
关于我
Java中的网络编程入门
阅读量:301 次
发布时间:2019-03-03

本文共 2253 字,大约阅读时间需要 7 分钟。

网络编程与TCP/IP协议

网络编程是指在一定协议下,实现两台计算机之间通信的程序设计。它是计算机网络通信的核心技术之一,广泛应用于Web开发、远程控制、云计算等领域。

软件结构

在网络编程中,软件可以分为客户端与服务器端两种结构:

  • C/S结构(Client/Server结构)

    客户端与服务器端分别运行,客户端向服务器端发送请求,服务器端处理请求并返回结果。

  • B/S结构(Browser/Server结构)

    浏览器作为客户端,向服务器端发送请求,服务器端处理后返回网页资源。

  • 网络通信协议

    网络通信需要遵循一定的规则,这些规则共同构成了网络通信协议。TCP/IP协议是最基础、最广泛的协议之一。

    TCP/IP协议

    TCP/IP协议分为两个部分:

    • TCP(传输控制协议):面向连接的协议,需要三次握手建立连接。
    • IP(互联网协议):用于将数据包从一台计算机发送到另一台计算机。

    TCP/IP协议是国际标准化的协议,几乎覆盖了互联网的所有通信需求。

    网络通信协议的分类

    网络通信协议可根据不同的需求分类。以下是两种常见协议的特点:

  • UDP(用户数据报协议)

    • 无需确认接收端是否存在,不需要接收端反馈。
    • 数据报的大小限制在64KB以内。
    • 适用于对延迟敏感的场景,如音视频传输。
  • TCP(传输控制协议)

    • 面向连接,必须经过三次握手建立连接。
    • 保证数据可靠传输。
    • 适用于对数据完整性要求较高的场景。
  • 网络编程的三要素

    网络编程的实现依赖于以下三要素:

  • 协议

    确定网络通信遵循的规则。

  • IP地址

    用于唯一标识网络中的计算机,IP地址可以是IPv4或IPv6形式。

  • 端口号

    端口号是逻辑上的门户,用于区分不同的应用程序和服务。

  • TCP通信程序

    TCP通信程序分为客户端与服务器端两种角色:

  • 客户端

    主动向服务器发起连接请求,等待服务器响应。

  • 服务器端

    等待客户端的连接请求,处理客户端的数据请求。

  • Java中的TCP通信实现

    在Java中,实现TCP通信程序可以使用以下类:

  • Socket类

    用于客户端连接服务器,创建Socket对象并指定IP地址和端口号。

  • ServerSocket类

    用于服务器端接收客户端连接,创建ServerSocket对象并指定端口号。

  • 服务器端实现

    public class TCPSever {    public static void main(String[] args) throws IOException {        ServerSocket serverSocket = new ServerSocket(8888);        Socket socket = serverSocket.accept();        InputStream inputStream = socket.getInputStream();        byte[] buffer = new byte[1024];        int len = inputStream.read(buffer);        System.out.println(new String(buffer, 0, len));        OutputStream outputStream = socket.getOutputStream();        outputStream.write("收到,谢谢".getBytes());        socket.close();        serverSocket.close();    }}

    客户端实现

    public class TCPClient {    public static void main(String[] args) throws IOException {        Socket socket = new Socket("127.0.0.1", 8888);        OutputStream outputStream = socket.getOutputStream();        outputStream.write("你好服务器".getBytes());        InputStream inputStream = socket.getInputStream();        byte[] buffer = new byte[1024];        int len = inputStream.read(buffer);        System.out.println(new String(buffer, 0, len));        socket.close();    }}

    Java中的Socket和ServerSocket

    Socket类

    • 构造方法:Socket(String host, int port)

      创建一个流套接字并连接到指定主机和端口。

    • 成员方法:

      • OutputStream getOutputStream()
      • InputStream getInputStream()
      • close()

    ServerSocket类

    • 构造方法:ServerSocket(int port)

      创建一个绑定到指定端口的服务器套接字。

    • 成员方法:

      • Socket accept()
      • close()

    通过以上实现,可以轻松构建TCP通信程序,满足不同的网络需求。

    转载地址:http://fxhl.baihongyu.com/

    你可能感兴趣的文章
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>
    Netty源码—8.编解码原理二
    查看>>
    Netty源码解读
    查看>>
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty相关
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>
    Net与Flex入门
    查看>>