| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> java 网络编程 -> 正文阅读 |
|
[网络协议]java 网络编程 |
网络编程:在通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换 网络编程三要素:? ? ? ? IP地址:要想在网络中的计算机互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接收数据的计算机和发送数据的计算机,IP就是标识。 ? ? ? ? 端口:网络通信本质是应用程序的通信,端口可以唯一标识设备中的应用程序,端口就是应用程序的标识 ????????协议:通过计算机网络可以实现多台计算机的连接,位于同一网络中的计算机在进行连接的时候必须遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据 的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交互,常见的有TCP和UDP协议。 ? ? ? ? ? ? ? ? 每次连接的时候都需要”三次握手“ InetAddress ????????static InetAddress getByName(String host)确定主机名称的IP地址。主机名称可以是机器名,也可以是IP地址 ????????????????InetAddress byName = InetAddress.getByName(host); ????????getHostName:获取该IP地址的主机名 ????????????????String hostName = byName.getHostName(); ? ? ? ? getHostAddress:返回文本显示中的IP地址字符串 ????????????????String hostAddress = byName.getHostAddress(); UDP通信????????原理:UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象因此对于基于UDP协议的通信双方,没有所谓的客户端和服务的概念 UDP发送数据Java提供了DatagramSocket类作为基于UDP协议的Socket 步骤: ? ? ? ? 1、创建发送端的Socket对象DatagramSocket DatagramSocket socket = new DatagramSocket(); ? ? ? ? 2、创建数据,将数据打包 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String line=null; while ((line=reader.readLine())!=null)?{ ???????? byte[] lineBytes = line.getBytes(); ? ? ? ? 3、调用DatagramSocket对象发送数据 ????????DatagramPacket packet = new DatagramPacket(lineBytes, lineBytes.length, ???????????????? ???????? ???????????????? InetAddress.getByName("IP地址"),10000);//10000是端口号 ????????socket.send(packet); } ? ? ? ? 4、关闭发送端 socket.close(); UDP接收数据? ? ? ? 1、创建DatagramSocket对象:使用代参,传入端口 ????????????????DatagramSocket receiveSocket = new DatagramSocket(10000); ? ? ? ? 2、创建数据包,接收数据 ????????????????while (true){ ???????????????????????? byte[] bytes = new byte[1024]; ? ? ? ? ?3、接收数据 ????????????????????????DatagramPacket packet = new? DatagramPacket(bytes, bytes.length); ? ? ? ? ? ? ? ? ? ? ? ? //接收 ???????????????????????? receiveSocket.receive(packet); ? ? ? ? ? ? ? ? //解析数据包 ????????????????????????System.out.println(new String(packet.getData(),0,packet.getLength())); ? ? ? ? 4、关闭接收 ????????????????????????receiveSocket.close(); ????????} TCP通信? ? ? ? ? ? ? ?? TCP发送数据? ? ? ? 1、创建客户端Socket对象 ????????????????Socket socket = new Socket("192.168.11.236",10000); ? ? ? ? 2、写数据 ????????????????OutputStream outputStream = socket.getOutputStream(); ????????????????outputStream.write("Hello!".getBytes()); ????????????????outputStream.write("你好呀".getBytes()); ? ? ? ? 3、关闭 ????????????????socket.close(); TCP接收数据? ? ? ? 1、创建ServerSocket对象 ????????????????ServerSocket serverSocket = new ServerSocket(12345); ? ? ? ? 2、监听客户端、返回Socket对象 ????????????????Socket accept = serverSocket.accept(); ? ? ? ? 3、得到数据 ????????????????InputStream inputStream = accept.getInputStream(); ????????????????byte[] bytes = new byte[1024]; ????????????????int line; ????????????????while ((line=inputStream.read(bytes))!=-1){ ???????????????????????? String s = new String(bytes, 0, line); ???????????????????????? System.out.println(s); ????????????????} ? ? ? ? 4、关闭 ????????????????serverSocket.close(); |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 5:55:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |