网络编程(详)

网络编程(详)一 概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备 通过通信线路连接起来 在网络操作系统 网络管理软件及网络通信协议的管理和协调下 实现资源共享和信息传递的计算机系统网络编程 在网络通信协议下 实现网络互连的不同计算机上运行的程序间可以进行数据交换二 网络编程三要素 IP 地址 要想让网络中的计算机能够互相通信 必须为每台计算机指定一个标识号 通过这个标识号来指定要接收数据的计算机和识别发送的计算机 而 P 地址

一.概述:

计算机网络
        ●是指将地理位置不同的具有 独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统
 网络编程
        ●在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换


二.网络编程三要素:

IP地址
        ●要想让网络中的计算机能够 互相通信,必须为每台计算机指定一个标识号, 通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而P地址就是这个标识号。也就是设备的标识
端口
        ●网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备 ,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识
协议
        ●通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统规定,通信双方必须同时遵守才能完成数据交换。常见的协议有UDP协议和TCP协议




一.IP地址

        IP地址:是网络中设备的唯一标识。

  1.ip地址的分类

2.IP常用命令:

ipconfig:查看本机IP地址

ping IP地址:检查网络是否连通

3.IP地址操作类-InetAddress

package 海绵hong; import java.net.InetAddress; public class InetAddressDemo01 { public static void main(String[] args) throws Exception { // 1.获取本机地址对象。 InetAddress ip1 = InetAddress.getLocalHost(); System.out.println(ip1.getHostName()); System.out.println(ip1.getHostAddress()); // 2.获取域名ip对象 InetAddress ip2 = InetAddress.getByName("www.baidu.com"); System.out.println(ip2.getHostName()); System.out.println(ip2.getHostAddress()); // 3.获取公网IP对象。 InetAddress ip3 = InetAddress.getByName("112.80.248.76"); System.out.println(ip3.getHostName()); System.out.println(ip3.getHostAddress()); // 4.判断是否能通: ping 5s之前测试是否可通 System.out.println(ip3.isReachable(5000)); } }

二.端口

端口:

三.协议

协议:

        计算机网络中,连接和通信的规则被称为网络通信协议

网络编程(详)

1.UDP协议

1.1 UDP通信原理

2.2 UDP发送数据

package 网络编程; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; / 发送端 一发 一收 */ public class UDPfa { public static void main(String[] args) throws Exception { System.out.println("=====客户端启动======"); // 1、创建发送端对象:发送端自带默认的端口号(人) DatagramSocket socket = new DatagramSocket(6666); // 2、创建一个数据包对象封装数据 / public DatagramPacket(byte buf[], int length, InetAddress address, int port) 参数一:封装要发送的数据 参数二:发送数据的大小 参数三:服务端的主机IP地址 参数四:服务端的端口 */ byte[] buffer = "海绵hong,有一个好工作".getBytes(); DatagramPacket packet = new DatagramPacket( buffer, buffer.length, InetAddress.getLocalHost() , 8888); // 3、发送数据出去 socket.send(packet); socket.close(); } }

 2.3UDP发送数据

package 网络编程; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; / 接收端 */ public class UDPjie { public static void main(String[] args) throws Exception { System.out.println("=====服务端启动======"); // 1、创建接收端对象:注册端口(人) DatagramSocket socket = new DatagramSocket(8888); // 2、创建一个数据包对象接收数据(韭菜盘子) byte[] buffer = new byte[1024 * 64]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); // 3、等待接收数据。 socket.receive(packet); // 4、取出数据即可 // 读取多少倒出多少 int len = packet.getLength(); String rs = new String(buffer,0, len); System.out.println("收到了:" + rs); // 获取发送端的ip和端口 String ip =packet.getSocketAddress().toString(); System.out.println("对方地址:" + ip); int port = packet.getPort(); System.out.println("对方端口:" + port); socket.close(); } }

2.TCP协议

网络编程(详)

网络编程(详)

 2.1 TCP通信原理

2.2TCP发送数据:

import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; public class ClientDemo1 { public static void main(String[] args) { try { System.out.println("====客户端启动==="); // 1、创建Socket通信管道请求有服务端的连接 // public Socket(String host, int port) // 参数一:服务端的IP地址 // 参数二:服务端的端口 Socket socket = new Socket("127.0.0.1", 7777); // 2、从socket通信管道中得到一个字节输出流 负责发送数据 OutputStream os = socket.getOutputStream(); // 3、把低级的字节流包装成打印流 PrintStream ps = new PrintStream(os); // 4、发送消息 ps.println("我是TCP的客户端,我已经与你对接,并发出邀请:约吗?"); ps.flush(); // 关闭资源。 // socket.close(); } catch (Exception e) { e.printStackTrace(); } } }

2.3TCP接收数据

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; public class ServerDemo2 { public static void main(String[] args) { try { System.out.println("===服务端启动成功==="); // 1、注册端口 ServerSocket serverSocket = new ServerSocket(7777); // 2、必须调用accept方法:等待接收客户端的Socket连接请求,建立Socket通信管道 Socket socket = serverSocket.accept(); // 3、从socket通信管道中得到一个字节输入流 InputStream is = socket.getInputStream(); // 4、把字节输入流包装成缓冲字符输入流进行消息的接收 BufferedReader br = new BufferedReader(new InputStreamReader(is)); // 5、按照行读取消息 String msg; if ((msg = br.readLine()) != null){ System.out.println(socket.getRemoteSocketAddress() + "说了:: " + msg); } } catch (Exception e) { e.printStackTrace(); } } } 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232199.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PTSMessagingCell

    PTSMessagingCell

    2021年8月21日
    61
  • 哈佛幸福课笔记下篇

    哈佛幸福课笔记下篇改变一生的课:哈佛幸福课笔记第1课什么是积极心理学?第2课为什么要学习积极心理学?第3课幸福是一种随机现象吗?第4课积极的环境能改变人第5课环境的力量第6课乐观主义第7课逆境还是机遇?第8课感激第9课积极情绪第10课如何去改变第11课养成良好习惯第12课写日记第13课面对压力第14课过犹不及第15课完美主义第16课享受过程第17课运动与冥想第18课睡眠、触摸和爱情的重要性第19课如何让爱情天长地久第20课幸福与幽默第21课爱情与自尊第22课自尊与自我实现第23课

    2022年7月25日
    7
  • httprunner3源码解读(3)client.py

    httprunner3源码解读(3)client.py源码目录结构ApiResponse这个类没啥好说的classApiResponse(Response):"""继承了requests模块中的Response类

    2022年7月31日
    5
  • hadoop入门教程列表

    hadoop入门教程列表最近也在看hadoop,搜集了一些入门的教程。感觉不错。写在这里分享下。1、从安装到实例以及基本的原理都有涉及:虾虾皮hadoop系列入门。2、一份不错的单节点hadoop搭建环境以及运行WordCount的教程:running-hadoop-on-ubuntu-linux-single-node-cluster 。3、Eclipse远程编译运

    2022年6月9日
    32
  • Android ListView美化

    Android ListView美化Android中的Selector用法Android美工坊–listview更改选中时item背景色

    2022年7月17日
    21
  • 一位Erlang程序猿的自白

    一位Erlang程序猿的自白

    2021年11月30日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号