网络编程-自学

简介: 未完

socket编程

所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象

socket编程代码

一、概念及流程

提供两台计算机之间的通信,主要用于描述IP和端口

在java中

java.net 包为两种常用的网络协议提供支持:

  • TCP:TCP 代表传输控制协议,允许两个应用程序间的可靠通信。TCP 通常在因特网协议上被使用,这被称为 TCP/IP。
  • UDP: UDP 代表用户数据报协议,一个无连接的允许应用程序间数据包传输的协议。

以下步骤发生在两台电脑使用套接字建立TCP连接时:

  • 服务器实例化一个 ServerSocket 对象,指示通信将产生在哪个端口号;
  • 服务器调用 ServerSocket 类的 accept() 方法。这个方法等待直到一个客户端在给定的端口上连接到服务器;
  • 在服务器等待后,一个客户端实例化一个 Socket 对象,指定服务器名称和连接的端口号;
  • Socket 类的构造函数努力将客户端连接到指定的服务器和端口号。如果通信建立,客户端现在就拥有了一个能和服务器通信的 Socket 对象;
  • 在服务器端,accept() 方法在服务器上返回一个连接到客户端套接字的新的套接字。

在连接建立后,通信可以使用 I/O 流产生。每个套接字都有一个输出流和一个输入流。客户端的输出流连接到服务器端的输入流,客户端的输入流连接到服务器端的输出流。

二、Socket基本操作

  • 连接远程机器
  • 发送、接受数据
  • 关闭连接
  • 绑定端口
  • 监听入站信息
  • 在绑定端口上接受来自远程机器的连接

前三个为socket常用方法,后三个为SeverSocket(服务端开启)常用方法

SeverSocket

服务器开启

构造方法-需要抛异常

常用方法

  1. public int getLocalPort()
    返回此套接字监听的端口
  2. public Socket accept() throws IOException
    监听并接受此套接字的连接
  3. public void setSoTimeout (int timeout)
    通过指定超时值启用/禁用 SO_TIMEOUT(以ms为单位)
  4. public void bind(SocketAddress host, int backlog)
    将 ServerSocket 绑定到特定地址(IP 地址和端口号)

Socket

Socket是可以在两端使用,客户端获取一个Socket实例化对象,而服务器端通过accept方法获取一个Socket对象返回值。

构造方法


常用方法

  1. public InetAddress getInetAddress()
    返回套接字连接的地址
  2. public SocketAddress getRemoteSocketAddress()
    返回此套接字连接的端点地址(未连接返回 null)
  3. public int getLocalPort()
    返回此套接字绑定的本地端口
  4. public int getPort()
    返回此套接字连接的远程端口
  5. public void connect(SocketAddress host, int timeout) throws IOException
    将此套接字连接到服务器,并指定一个超时值
  6. public InputStream getInputStream() throws IOException
    返回此套接字的输入流
  7. public OutputStream getOutputStream() throws IOException
    返回此套接字的输出流
  8. public void close() throws IOException
    关闭此套接字


目录
相关文章
|
6月前
|
SQL 运维 安全
黑客(网络安全)技术自学——高效学习
黑客(网络安全)技术自学——高效学习
73 1
|
4月前
|
安全 Linux 网络安全
自学黑客(网络安全)
【7月更文挑战第18天】
83 5
|
机器学习/深度学习 安全 程序员
《网络安全0-100》自学误区和陷阱
《网络安全0-100》自学误区和陷阱
68 0
《网络安全0-100》自学误区和陷阱
|
分布式计算 Hadoop Linux
hadoop3自学入门笔记(1)——虚拟机安装和网络配置
hadoop3自学入门笔记(1)——虚拟机安装和网络配置
339 0
hadoop3自学入门笔记(1)——虚拟机安装和网络配置
|
网络协议 算法 Java
五分钟自学编程:计算机网络到底应该怎么学?!
原创声明 本文首发于微信公众号【程序员黄小斜】 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 思维导图 简介 上一期我讲到了数据结构怎么学,当时我的学习方法是先看视频,再看书,然后刷一刷基础算法题做巩固。
|
1天前
|
安全 网络安全 API
揭秘网络世界的守护神:网络安全与信息安全的深度剖析
【10月更文挑战第36天】在数字时代的洪流中,网络安全和信息安全如同守护神一般,保护着我们的数据不受侵犯。本文将深入探讨网络安全漏洞的成因、加密技术的奥秘以及提升个人安全意识的重要性。通过分析最新的攻击手段、介绍先进的防御策略,并分享实用的安全实践,旨在为读者呈现一个全方位的网络安全与信息安全知识图谱。让我们一同揭开网络世界的神秘面纱,探索那些不为人知的安全秘籍。
11 6
|
2天前
|
SQL 安全 算法
网络安全与信息安全:漏洞、加密与意识的交织
【10月更文挑战第35天】在数字化时代,网络安全不再是可选项,而是每个网民的必修课。本文旨在深入探讨网络安全的核心要素,包括常见的安全漏洞、先进的加密技术以及不可或缺的安全意识。通过分析这些方面,我们将揭示如何保护个人和组织免受网络攻击的策略,同时提供实用的代码示例,以增强读者的实践能力。文章将引导您思考如何在日益复杂的网络环境中保持警惕,并采取积极措施以确保数据的安全。
13 4
|
16小时前
|
SQL 安全 物联网
网络安全与信息安全:深入探讨网络漏洞、加密技术及安全意识###
网络安全与信息安全是当今数字化时代的重要议题。本文将详细探讨网络安全和信息安全的差异,重点介绍常见的网络漏洞、加密技术以及如何提升用户和组织的安全意识。通过具体案例和技术分析,帮助读者理解这些关键概念,并提供实用的建议以应对潜在的网络威胁。 ###
下一篇
无影云桌面