博客
关于我
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/

    你可能感兴趣的文章
    numpy绘制热力图
    查看>>
    numpy转PIL 报错TypeError: Cannot handle this data type
    查看>>
    Nutch + solr 这个配合不错哦
    查看>>
    NutzCodeInsight 2.0.7 发布,为 nutz-sqltpl 提供友好的 ide 支持
    查看>>
    NutzWk 5.1.5 发布,Java 微服务分布式开发框架
    查看>>
    NUUO网络视频录像机 css_parser.php 任意文件读取漏洞复现
    查看>>
    NuxtJS 接口转发详解:Nitro 的用法与注意事项
    查看>>
    NVelocity标签使用详解
    查看>>
    Nvidia Cudatoolkit 与 Conda Cudatoolkit
    查看>>
    NVIDIA GPU 的状态信息输出,由 `nvidia-smi` 命令生成
    查看>>
    NVIDIA-cuda-cudnn下载地址
    查看>>
    nvidia-htop 使用教程
    查看>>
    nvidia-smi 参数详解
    查看>>
    nvm安装以后,node -v npm 等命令提示不是内部或外部命令 node多版本控制管理 node多版本随意切换
    查看>>
    NYOJ 1066 CO-PRIME(数论)
    查看>>
    nyoj------203三国志
    查看>>
    nyoj58 最少步数
    查看>>
    OAuth2 + Gateway统一认证一步步实现(公司项目能直接使用),密码模式&授权码模式
    查看>>
    OAuth2 Provider 项目常见问题解决方案
    查看>>
    Vue.js 学习总结(14)—— Vue3 为什么推荐使用 ref 而不是 reactive
    查看>>