IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 网络编程TCP/UDP -> 正文阅读

[网络协议]网络编程TCP/UDP

1.1、概论

地球村,你在西安,你一个美国的朋友!


信件:

计算机网络:

计算机网络系统就是利用通信设备和线路将地理位置不同功能独立的多个计算机系统互联起来,以功能完善的网络软件实现网络中资源共享和信息传递的系统。

网络编程的目的:

无线电台...传播交流信息,数据交换,通信

想要达到的效果需要什么:

  1. 如何准确定位网络上的一台主机 192.168.16.124:端口,定位上这个计算机上的某个资源

  2. 找到了这个主机,如何传输数据呢?

javaweb:网页编程 B/S

网络编程:TCP/IP C/S

1.2、网络通信的协议

如何实现网络的通信?

通信双方地址:

  • IP

  • 端口号

  • 192.168.16.124:5900

规则:网络通信的协议

http,ftp,smtp,

TCP/IP参考模型

小结:

  1. 网络编程中有两个主要的问题

    • 如何准确的定位到网路上的一台或多台主机

    • 找到主机后如何进行通信

  2. 网络编程中的要素

    • IP和端口号 IP

    • 网络通信协议 UDP,TCP

  3. 万物皆对象

1.3、IP

IP地址:IntAddress

  • 唯一定位一台网络上计算机

  • 127.0.0.1 : 本机 localhost

  • ip地址的分类:

    • IPv4/v6

      • 127.0.0.1 ,4

    • IP地址的分类

    • 公网-私网

1.6、TCP

Tomcat

服务端

  • 自定义 S

  • Tomcat服务器 S : Java后台开发!

客户端

  • 自定义 C

  • 浏览器 B

?/*package com.cao.lesson02;
??
?import java.io.File;
?import java.io.FileInputStream;
?import java.io.OutputStream;
?import java.net.InetAddress;
?import java.net.Socket;
?import java.net.UnknownHostException;
??
?public class TcpClientDemo02 {
? ? ?public static void main(String[] args) throws Exception {
? ? ? ? ?//1.创建一个Socket连接
? ? ? ? ?Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9000);
? ? ? ? ?//2、创建一个输出流
? ? ? ? ?OutputStream os = socket.getOutputStream();
??
? ? ? ? ?//3、读取文件
? ? ? ? ?//FileInputStream fis = new FileInputStream(new File("C:\\Users\\14806\\Pictures\\Saved Pictures"));
? ? ? ? ?//4、写出文件
? ? ? ? ?byte[] buffer = new byte[1024];
? ? ? ? ?int len;
? ? ? ? ?while((len=fis.read(buffer))!=1){}
? ? ? ? ?os.write(buffer,0,len);
? ? ?}
??
? ? ?//5.关闭资源
? ? ?//fis.close();
? ? ?os.close();
? ? ?socket.close();
??
?}
?*/

1.7、UDP

发短信:不用连接,需要知道对方的地址!

发送消息


?package com.cao.lesson03;
??
?import java.net.DatagramPacket;
?import java.net.DatagramSocket;
?import java.net.InetAddress;
?import java.net.SocketException;
??
?//不需要连接服务器
?public class UdpClientDemo01 {
? ? ?public static void main(String[] args) throws Exception {
? ? ? ? ?//1、建立一个Socket
? ? ? ? ?DatagramSocket socket = new DatagramSocket(8080);
??
? ? ? ? ?//2、建个包
? ? ? ? ?String msg = "你好啊,服务器!";
??
? ? ? ? ?//发送给谁
? ? ? ? ?InetAddress localhost = InetAddress.getByName("localhost");
? ? ? ? ?int port = 9090;
? ? ? ? ?//数据,数据的长度起始,要发送给谁
? ? ? ? ?DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length);
??
? ? ? ? ?//3、发送包
? ? ? ? ?socket.send(packet);
??
? ? ? ? ?//4、关闭流
? ? ? ? ?socket.close();
? ?  }
?}
??

接收端

?package com.cao.lesson03;
??
?import com.sun.org.apache.xpath.internal.operations.String;
??
?import java.net.DatagramPacket;
?import java.net.DatagramSocket;
?//import java.net.SocketException;
??
?//还是要等待客户端的链接!
?public class UdpServerDemo01 {
? ? ?public static void main(String[] args) throws Exception {
? ? ? ? ?//开放端口
? ? ? ? ?DatagramSocket socket = new DatagramSocket(9090);
??
? ? ? ? ?//接收数据包
? ? ? ? ?byte[] buffer = new byte[1024];
? ? ? ? ?DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);//接收
??
? ? ? ? ?socket.receive(packet); //阻塞接收
??
? ? ? ? ?System.out.println(packet.getAddress().getHostAddress());
? ? ? ? ?System.out.println(new java.lang.String(packet.getData(),0,packet.getLength()));
??
? ? ? ? ?//关闭连接
? ? ? ? ?socket.close();
??
??
? ?  }
?}

循环发送消息

?package com.cao.chat;
??
?import java.io.BufferedReader;
?import java.io.InputStreamReader;
?import java.net.DatagramPacket;
?import java.net.DatagramSocket;
?import java.net.InetSocketAddress;
?import java.net.SocketException;
??
?public class UdpSenderDemo01 {
? ? ?public static void main(String[] args) throws Exception {
? ? ? ? ?DatagramSocket socket = new DatagramSocket(8888);
??
? ? ? ? ?//准备数据: 控制台读取 System.in
??
? ? ? ? ?BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
??
? ? ? ? ?while (true) {
? ? ? ? ? ? ?String data = reader.readLine();
? ? ? ? ? ? ?byte[] datas = data.getBytes();
? ? ? ? ? ? ?DatagramPacket packet = new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",6666));
??
? ? ? ? ? ? ?socket.send(packet);
? ? ? ? ? ? ?if (data.equals("bye")){
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ?  }
? ? ? ?  }
??
??
? ? ? ? ?socket.close();
? ?  }
?}

循环接收消息

?package com.cao.chat;
??
?import java.net.DatagramPacket;
?import java.net.DatagramSocket;
?import java.net.SocketException;
??
?public class UdpReceiveDemo01 {
? ? ?public static void main(String[] args) throws Exception {
? ? ? ? ?DatagramSocket socket = new DatagramSocket(6666);
??
??
? ? ? ? ?while(true){
? ? ? ? ? ? ?//准备接收包裹
? ? ? ? ? ? ?byte[] container = new byte[1024];
? ? ? ? ? ? ?DatagramPacket packet = new DatagramPacket(container,0,container.length);
? ? ? ? ? ? ?socket.receive(packet); //阻塞式接受包裹
??
? ? ? ? ? ? ?//断开连接  bye
? ? ? ? ? ? ?byte[] data = packet.getData();
? ? ? ? ? ? ?String receiveData = new String(data, 0, data.length);
??
? ? ? ? ? ? ?System.out.println(receiveData);
??
? ? ? ? ? ? ?if (receiveData.equals("bye")){
? ? ? ? ? ? ? ? ?break;
? ? ? ? ? ?  }
??
? ? ? ?  }
??
? ? ? ? ?socket.close();
? ?  }
?}

在线咨询:两个人都可以是发送方,也都可以是接收方!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:45:58  更:2021-11-10 12:48:24 
 
开发: 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年7日历 -2024/7/1 21:10:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码