习题-Java网络编程

news2024/11/27 22:41:15

目录

1.TCP-对象

2.UDP​​​​​​​​​​​​​​


1.TCP-对象

利用TCP传输对象信息,需要对对象进行实例化

User类:

package dh09.demo02;

import java.io.Serializable;

public class User implements Serializable {
	private String name;
	private String pwd;
	
	public User() {
	
	}
	public User(String name, String pwd) {

		this.name = name;
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
	
}

服务器端:

package dh09.demo02;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服务器
public class Demo01 {

	public static void main(String[] args) {
		try {
			ServerSocket serverSocket = new ServerSocket(8090);
			Socket socket = serverSocket.accept();
			InputStream iStream = socket.getInputStream();
			
			ObjectInputStream ois = new ObjectInputStream(iStream);
			User user = (User) ois.readObject();
			System.out.println("客户端说:"+user.getName()+"-"+user.getPwd());
			//通过输出流给客户端一个响应
			OutputStream os = socket.getOutputStream();
			String reply = "欢迎登陆";
			os.write(reply.getBytes());
			
			os.close();
			ois.close();
			iStream.close();
			socket.close();
			serverSocket.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

客户端:

package dh09.demo02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;

//客户端
public class Test01 {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("localhost", 8090);
			OutputStream oStream = socket.getOutputStream();
			ObjectOutputStream oos = new ObjectOutputStream(oStream);
			User user = new User("admin","123456");
			oos.writeObject(user);
			
			socket.shutdownOutput();
			InputStream iStream = socket.getInputStream();
			BufferedReader br = new BufferedReader(new InputStreamReader(iStream));
			String reply;
			while ((reply = br.readLine())!=null) {
				System.out.println("服务器响应说:"+reply);
			}
			br.close();
			iStream.close();
			oos.close();
			oStream.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		

	}

}

2.UDP

package dh09.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) {
		//接收数据
		
		
		
		//1.创建DatagramSocket对象
		try {
			DatagramSocket dSocket = new DatagramSocket(10086);
			
			//2.接收数据包
			byte[] b = new byte[1024];
			
			DatagramPacket dPacket = new DatagramPacket(b,b.length);
			
			
			dSocket.receive(dPacket);
			
			//3.解析数据包
			byte[] data = dPacket.getData();
			int len = dPacket.getLength();
			InetAddress address = dPacket.getAddress();
			int port = dPacket.getPort();
			
			System.out.println("接收到数据:"+new String(data,0,len));
			System.out.println("该数据是从:"+address+",这台电脑中的:"+port+"这个端口号发出的");
			
			
			//4.释放资源
			dSocket.close();
			
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}

发送端:

package dh09.UDPDemo;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class SendMessageDemo {

	public static void main(String[] args) {
		
		try {
			//1.创建DatagramSocket对象
			DatagramSocket dSocket = new DatagramSocket();
			//2.打包数据
			String string = "你好";
			byte[] b = string.getBytes();
			InetAddress address = InetAddress.getByName("127.0.0.1");
			int port = 10086;
			
			DatagramPacket dPacket = new DatagramPacket(b, b.length,address,port);
			//3.发送数据
			dSocket.send(dPacket);
			
			//4.释放资源
			dSocket.close();
			
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	
	}

}

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

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

相关文章

高并发的哲学原理(九)-- 细数四代分布式数据库并拆解

高并发的哲学原理(九)-- 细数四代分布式数据库并拆解 TiDB 和 OceanBase(主从、中间件、KV、计算与存储分离、列存储、CAP定理) 本文大约 15000 字,阅读需要 50 分钟。 上一篇文章啃硬骨头差点把我牙给崩了&#xff0c…

提升C++操作Json的开发效率

一、背景 在C项目开发中,不同的服务之间会定义通讯接口,接口格式定义中的通讯数据往往是json格式的。为了快速开发,我的需求如下: 1.定义好通讯接口后,就定义好了交互的json内容格式。我希望有工具可以一键将json内容…

x86架构ubuntu18下运行PS模拟器ePSXe

0. 环境 i7 虚拟机ubuntu18(ubuntu22不行,会提示CURL_OPENSSL_3 not found) 1. 安装依赖 sudo apt-get install libsdl-ttf2.0-0 sudo apt-get install libcurl3 2. 获取可执行文件 mkdir ePSXe cd ePSXe wget http://www.epsxe.com/files/…

MAYA精灵粒子一

group1.rotateYframe*10; particleShape1.spriteTwistPPrand(-90,90); 少 一个

Debug工具Trace32的ARM内存访问类型详解

关于Trace32的访问类型的基本概念可以参考博文: Trace32使用教程-访问类型(Access Class)_SOC罗三炮的博客-CSDN博客 本文将以ARMv8为基础,详解Trace32的内存访问类型。 内存访问类型描述A绝对寻址(物理地址),即绕过…

实现复杂的按钮动画

今天主要是实现一个复杂的按钮提交动画效果&#xff0c;具体的关键变形环节如下&#xff1a; 初始环节 加载环节 展示结果环节 代码实现过程 1、html 页面机构 <button class"btn" data-btn>Submit</button> <div class"check_box">&…

初级与高级软件测试工程师的差距体现在哪些方面?如何成为高级测试工程师?

目录 初级测试工程师和高级测试工程师有什么区别或者差距呢&#xff1f; 一、不断的钻研 二、向同行或者他人学习 三、团队合作是更宽广的提升途径 四、了解你的客户和团队成员 软件测试工程师发展规划路线 我们都在努力追求卓越&#xff1a;希望在我们选择的职业中出类拔…

html2canvas将document DOM节点转换为图片,并下载到本地

html2canvas - Screenshots with JavaScripthttps://html2canvas.hertzen.com/了解一下&#xff0c;安装先 npm install --save html2canvas 用到的知识包括 前端用原生js编辑文件内容→创建生成文件(格式可以自定义)→下载文件_你挚爱的强哥的博客-CSDN博客会自动创建一个h…

服务器使用UDP通讯127.0.0.1测试成功连接服务器却通讯失败

首先看看本人情况 解释一下&#xff1a; 1&#xff1a;左边窗口是模拟服务程序&#xff0c;功能是收到消息后把消息打印出来&#xff0c;并把收到的消息再发回给发送消息的主机 2&#xff1a;右边窗口是模拟客户程序&#xff0c;功能是将输入的消息发送给服务程序的主机&…

【多线程例题】顺序打印abc线程

顺序打印-进阶版 方法一&#xff1a;三个线程竞争同一个锁&#xff0c;通过count判断是否打印 方法二&#xff1a;三个线程同时start&#xff0c;分别上锁&#xff0c;从a开始&#xff0c;打印后唤醒b 三个线程分别打印A&#xff0c;B&#xff0c;C 方法一&#xff1a;通过co…

前端笔记_OAuth规则机制下实现个人站点接入qq三方登录

文章目录 ⭐前言⭐qq三方登录流程&#x1f496;qq互联中心创建网页应用&#x1f496;配置回调地址redirect_uri&#x1f496;流程分析 ⭐思路分解⭐技术选型实现&#x1f496;技术选型&#xff1a;&#x1f496;实现 ⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本…

4.3.tensorRT基础(1)-实现模型的推理过程

目录 前言1. inference案例总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 基础-实现模型的推理过程 课程大纲可…

深度学习——LSTM解决分类问题

RNN基本介绍 概述 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一种深度学习模型&#xff0c;主要用于处理序列数据&#xff0c;如文本、语音、时间序列等具有时序关系的数据。 核心思想 RNN的关键思想是引入了循环结构&#xff0c;允许…

JavaBeans

Code eamples ① Product.java (JavaBean Class) ② Bean.java (Servlet) ③ complie javac -encoding utf-8 -d ..\classes -sourcepath . chapter15\Bean.java ④ Tomcat ⑤ http://localhost:8080/book/chapter15/bean

flink水位线传播及任务事件时间

背景 本文来讲解一下flink的水位线传播及对其对任务事件时间的影响 水位线 首先flink是通过从源头生成水位线记录的方式来实现水位线传播的&#xff0c;也就是说水位线是嵌入在正常的记录流中的特殊记录&#xff0c;携带者水位线的时间戳&#xff0c;以下我们就通过图片的方…

Docker常用命令(三)

1、镜像命令 1、列出本地主机上的镜像 docker images [options]optiins说明&#xff1a; -a&#xff1a;列出本地所有的镜像&#xff08;包含历史映像层&#xff09; -q&#xff1a;只显示镜像ID2、搜索某个镜像信息 docker search [options] 镜像名字3、下载镜像 docker …

Kafka第二课-代码实战、参数配置详解、设计原理详解

一、代码实战 一、普通java程序实战 引入依赖 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.4.1</version></dependency><dependency>&l…

windows环境hadoop报错‘D:\Program‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

Hadoop版本为2.7.3&#xff0c;在环境配置好后&#xff0c;检查hadoop安装版本&#xff0c;报如标题所示错误&#xff0c;尝试网上主流的几种方法均无效。 错误&#xff1a;windows环境hadoop报错’D:\Program’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 错误方…

Jackson使用

导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

静态输出调节

1.理论部分 15. SISO反馈控制器设计 (6)&#xff1a;输出调节-静态反馈 Output Regulation - 知乎 (zhihu.com) 上述博客已经写的很好了&#xff0c;过多描述 2.仿真实验 3.参考理论 首先通过18式求解出X和U&#xff0c;然后设计一个让原系统初始稳定的控制律Kx&#xff0c;…