| |
|
|
开发:
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、概论地球村,你在西安,你一个美国的朋友! 信件: 计算机网络: 计算机网络系统就是利用通信设备和线路将地理位置不同、功能独立的多个计算机系统互联起来,以功能完善的网络软件实现网络中资源共享和信息传递的系统。 网络编程的目的: 无线电台...传播交流信息,数据交换,通信 想要达到的效果需要什么:
javaweb:网页编程 B/S 网络编程:TCP/IP C/S 1.2、网络通信的协议如何实现网络的通信? 通信双方地址:
规则:网络通信的协议 http,ftp,smtp, TCP/IP参考模型 小结:
1.3、IPIP地址:IntAddress
1.6、TCPTomcat服务端
客户端
?/*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地址范围 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年10日历 | -2025/10/23 11:07:24- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |