网络编程的学习2

UDP通信协议

发送数据
package UDPDEmo;import java.io.IOException;
import java.net.*;
import java.nio.charset.StandardCharsets;public class SendMessageDemo {public static void main(String[] args) throws IOException {//发送数据//1.创建对象//细节://绑定端口号,以后我们通过这个端口往外发送//空参:所有可用的端口随机一个使用//有参:指定端口号进行绑定DatagramSocket ds=new DatagramSocket();
//2.打包数据String str="karry";byte[] bytes=str.getBytes();InetAddress byName = InetAddress.getByName("127.0.0.1");int port=10086;DatagramPacket dp=new DatagramPacket(bytes, bytes.length,byName,port);ds.send(dp);ds.close();}
}
接收数据
package UDPDEmo;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;public class ReceiveMessageDemo {public static void main(String[] args) throws IOException {//接收数据//细节://在接收的时候一定要绑定端口//而且绑定的端口一定要跟发送的端口保持一致DatagramSocket ds=new DatagramSocket(10086);byte[] bytes=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes, bytes.length);ds.receive(dp);byte[] data = dp.getData();int length = dp.getLength();InetAddress address = dp.getAddress();int port = dp.getPort();System.out.println("接收到的数据"+new String(data,0,length));System.out.println("数据是从"+address+"这台电脑中的"+port+"这个端口发出的");ds.close();}
}

聊天室代码

package UDPDEmo.uddemo01;import java.io.IOException;
import java.net.*;
import java.util.Scanner;public class SendMessageDemo {public static void main(String[] args) throws IOException {DatagramSocket ds=new DatagramSocket();Scanner sc=new Scanner(System.in);while (true) {System.out.println("请输入要说的话");String str=sc.nextLine();if("886".equals(str)){break;}byte[] bytes=str.getBytes();InetAddress inetAddress = InetAddress.getByName("127.0.0.1");int port=10086;DatagramPacket dp=new DatagramPacket(bytes, bytes.length,inetAddress,port);ds.send(dp);}ds.close();}
}
package UDPDEmo.uddemo01;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;public class ReceiveMessageDemo {public static void main(String[] args) throws IOException {DatagramSocket ds=new DatagramSocket(10086);byte[] bytes=new byte[1024];DatagramPacket dp=new DatagramPacket(bytes, bytes.length);while (true) {ds.receive(dp);byte[] data = dp.getData();int length = dp.getLength();String hostAddress = dp.getAddress().getHostAddress();String hostName = dp.getAddress().getHostName();System.out.println("ip为"+hostAddress+",主机名为"+hostName+"的人,发送了数据:"+new String(data,0,length));}}
}

UDP的通信方式

单播

组播:

组播地址:224.0.0.0-239.255.255.255,其中224.0.0.0-224.0.0.255为预留的组播地址

广播:255.255.255.255

TCP通信程序

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,通信之前要保证连接已经建立,通过Socket产生IO流进行网络通信。

package UDPDEmo.tcpd1;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1",10000);OutputStream os = socket.getOutputStream();os.write("aaa".getBytes());os.close();socket.close();}
}
package UDPDEmo.tcpd1;import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket=new ServerSocket(10000);Socket socket = serverSocket.accept();InputStream is = socket.getInputStream();int b;while((b=is.read())!=-1){System.out.println((char)b);}socket.close();
serverSocket.close();}
}
package UDPDEmo.tcpd1;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 Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket=new ServerSocket(10000);Socket socket = serverSocket.accept();InputStream is = socket.getInputStream();InputStreamReader isr=new InputStreamReader(is);BufferedReader br=new BufferedReader(isr);int b;while((b=br.read())!=-1){System.out.println((char)b);}socket.close();
serverSocket.close();}
}
package UDPDEmo.tcpd1;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1",10000);OutputStream os = socket.getOutputStream();os.write("aaa".getBytes());os.close();socket.close();}
}

练习

多发多收

package UDPDEmo.test1;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class Client {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1",10000);OutputStream os = socket.getOutputStream();String str= null;while (true) {Scanner sc=new Scanner(System.in);System.out.println("请输入您要发送的信息");str = sc.nextLine();if("886".equals(str)){break;}}os.write(str.getBytes());socket.close();}
}
package UDPDEmo.test1;import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class Server {public static void main(String[] args) throws IOException {ServerSocket ss=new ServerSocket(10000);Socket socket = ss.accept();InputStream is = socket.getInputStream();InputStreamReader isr=new InputStreamReader(is);int b;while((b=isr.read())!=-1){System.out.println((char)b);}socket.close();ss.close();}
}

接收和反馈

package UDPDEmo.test2;import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1",10000);String str="见到你很高兴";OutputStream os = socket.getOutputStream();os.write(str.getBytes());socket.shutdownOutput();InputStream is = socket.getInputStream();InputStreamReader isr=new InputStreamReader(is);int b;while((b=isr.read())!=-1){System.out.println((char)b);}socket.close();}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {ServerSocket ss=new ServerSocket(10000);Socket socket = ss.accept();InputStream  is=socket.getInputStream();InputStreamReader isr=new InputStreamReader(is);int b;while((b=isr.read())!=-1){System.out.println((char)b);}//回写数据String str="到底有多开心";OutputStream os = socket.getOutputStream();os.write(str.getBytes());socket.close();ss.close();}
}

上传文件

package UDPDEmo.test3;import java.io.*;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket=new Socket("127.0.0.1",10000);BufferedInputStream bis=new BufferedInputStream(new FileInputStream("F:\\javaEE\\clientdir\\a.jpg"));BufferedOutputStream bos=new BufferedOutputStream(socket.getOutputStream());byte[] bytes=new byte[1024];int len;while((len=bis.read())!=-1){bos.write(bytes,0,len);}socket.shutdownOutput();BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = br.readLine();System.out.println(line);socket.close();}
}
package UDPDEmo.test3;import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {ServerSocket ss=new ServerSocket(10000);Socket socket = ss.accept();BufferedInputStream bis=new BufferedInputStream(socket.getInputStream());BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("F:\\javaEE\\serverdir"));int len;byte[] bytes=new byte[1024];while((len=bis.read())!=-1){bos.write(bytes,0,len);}BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write("上传成功");bw.newLine();bw.flush();socket.close();ss.close();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCL点云库出现错误:..\dist.h(523): error C3861: “pop_t”: 找不到标识符

工程代码&#xff1a;简单地测试了k-d树的最近邻搜索功能 #include<pcl/point_cloud.h> #include<pcl/kdtree/kdtree_flann.h>#include<iostream> #include<vector> #include<ctime>using namespace std;int main(int argc, char** argv) {//使…

回溯算法|78.子集

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {result.push_back(path); // 收集子集&#xff0c;要放在终止添加的上面&#xff0c;否则会漏掉自…

Pygame基础8-碰撞

Collisions 在Pygame中&#xff0c;我们使用矩形来移动物体&#xff0c;并且用矩形检测碰撞。 colliderect检测两个矩形是否碰撞&#xff0c;但是没法确定碰撞的方向。 Rect1.colliderect(Rect2) # collision -> return Ture # else -> return Falsecollidepoint可以…

Spring拓展点之SmartLifecycle如何感知容器启动和关闭

Spring为我们提供了拓展点感知容器的启动与关闭&#xff0c;从而使我们可以在容器启动或者关闭之时进行定制的操作。Spring提供了Lifecycle上层接口&#xff0c;这个接口只有两个方法start和stop两个方法&#xff0c;但是这个接口并不是直接提供给开发者做拓展点&#xff0c;而…

如何理解 Java 中的成员变量、字段和属性

在Java编程中&#xff0c;成员变量、字段和属性是关键概念&#xff0c;用于存储对象状态信息的变量。虽然它们经常被用作同义词&#xff0c;但在实际应用中&#xff0c;它们有着微妙的区别。 1. 成员变量&#xff08;Member Variable&#xff09; 成员变量是类中声明的任何变…

AI音乐GPT时刻来临:Suno 快速入门手册!

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

代码块的理解

如果成员变量想要初始化的值不是一个硬编码的常量值&#xff0c;而是需要通过复杂的计算或读取文件、或读取运行环境信息等方式才能获取的一些值&#xff0c;该怎么办呢&#xff1f;此时&#xff0c;可以考虑代码块&#xff08;或初始化块&#xff09;。 代码块(或初始化块)的作…

前端作业之完成学校官方网页的制作

&#xff08;未使用框架&#xff0c;纯html和css制作&#xff09; 注&#xff1a;由本人技术限制&#xff0c;代码复用性极差 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>xxx大学</tit…

SpringBoot接收参数的方式

Get 请求 1.1 以方法的形参接收参数 1.这种方式一般适用参数比较少的情况 RestController RequestMapping("/user") Slf4j public class UserController {GetMapping("/detail")public Result<User> getUserDetail(String name,String phone) {log.…

zip解压异常java.lang.IllegalArgumentException: MALFORMED处理

使用hutool解压zip包时出错&#xff1a; //压缩包解压到固定目录 ZipUtil.unzip(tempZipFile,dir);在解压文件的时候报错&#xff0c;原因是压缩文件中有中文&#xff1b;导致错误&#xff0c;解决办法是设置编码&#xff1a; ZipFile tempZipFile new ZipFile(zipFile, Cha…

【Linux】详解动静态库的制作和使用动静态库在系统中的配置步骤

一、库的作用 1、提高开发效率&#xff0c;让开发者所有的函数实现不用从零开始。 2、隐藏源代码。 库其实就是所有的.o文件用特定的方式进行打包形成一个文件&#xff0c;各个.o文件包含了源代码中的机器语言指令。 二、动态库和静态库的制作和使用 2.1、静态库的制作和使用…

如何监控特权帐户,保护敏感数据

IT基础设施的增长导致员工可以访问的凭据和资源数量急剧增加。每个组织都存储关键信息&#xff0c;这些信息构成了做出关键业务决策的基石。与特权用户共享这些数据可以授予他们访问普通员工没有的凭据的权限。如果特权帐户凭证落入不法分子之手&#xff0c;它们可能被滥用&…

使用WebRTC实现简单直播

WebRTC 是一个强大的实时通信技术&#xff0c;它允许用户直接在网页浏览器之间进行音视频通话和数据共享&#xff0c;无需任何外部插件。结合 WebSocket&#xff0c;我们可以构建一个简单的直播系统&#xff0c;让用户能够发布自己的实时视频流&#xff0c;同时允许其他用户观看…

请描述一下Velocity模板中的循环结构是如何工作的。Velocity有哪些内置的函数和方法?能否举例说明它们的使用场景?

请描述一下Velocity模板中的循环结构是如何工作的。 Velocity是一个基于Java的模板引擎&#xff0c;它允许开发人员使用简单的模板语言来引用由Java代码定义的对象&#xff0c;并在生成的文本中呈现这些对象。在Velocity模板中&#xff0c;循环结构用于遍历集合或数组&#xff…

【重学C语言】三、C语言最简单的程序

【重学C语言】三、C语言最简单的程序 最简单的程序头文件使用尖括号 < >使用双引号 ""区别与注意事项示例 主函数认识三个错误 常量和变量常量ASCII 码表转义字符 关键字数据类型关键字存储类关键字修饰符关键字控制流程关键字函数相关关键字其他关键字 变量变…

Python中批量修改文件名,去除某些内容

环境&#xff1a;Window10 Python3.9 PyCharm(2023.1.3) -------------------------------------****************** ** *********************----------------------------------------- 这是在Python中批量将指定文件夹下相似的文件名&#xff0c;提取文件名有效信息&am…

llama.cpp运行qwen0.5B

编译llama.cp 参考 下载模型 05b模型下载 转化模型 创建虚拟环境 conda create --prefixD:\miniconda3\envs\llamacpp python3.10 conda activate D:\miniconda3\envs\llamacpp安装所需要的包 cd G:\Cpp\llama.cpp-master pip install -r requirements.txt python conver…

什么!Intel/AMD/Apple Silicon也能本地部署的Llama工具来了

主流的LLM都需要通过CUDA才能高效的运行在本地&#xff0c;但是随着Github上出现了Llama.cpp这个神器&#xff0c;一切都改变了。它通过AVX指令和MPI来实现CPU上并行计算&#xff0c;从而在本地计算机高效地运行各种主流的类Llama模型。同时它也支持metal&#xff0c;使得Apple…

保险项目的模块

用户管理模块 注册登录用户信息管理&#xff08;个人资料、密码重置等&#xff09;权限管理 保单管理模块 保单申请保单查询保单修改保单终止 理赔管理模块 理赔申请理赔审核理赔支付 保险产品管理模块 产品信息管理产品定价产品推广 支付与结算模块 支付方式管理保费…

go包下载时报proxyconnect tcp: dial tcp 127.0.0.1:80: connectex错误的解决方案

一大早的GoLand就开始抽风了&#xff0c;好几个文件import都红了&#xff0c;于是我正常操作点击提示的sync&#xff0c;但是却报了一堆错&#xff1a; go: downloading google.golang.org/grpc v1.61.1 go: downloading google.golang.org/genproto v0.0.0-20240228224816-df9…