网络程序设计

互相连接,发送信息

tcp和udp协议

tcp会有准备,udp不会准备。

8080端口:tomcat端口,java和web相连接

80端口:http

21端口:ftp

套接字

socket:提供给程序可以对外进行连接的接口

ip地址

特殊的ip:本地回送地址

127.0.0.1

域名不会相同

ip地址

计算机名

package twentyoneth;


import java.net.*; 									//导入java.net包
public class Address { 								//创建类
	public static void main(String[] args) {
		InetAddress ip; 							//创建InetAddress对象
		try { 									//使用try语句块捕捉可能出现的异常
			ip = InetAddress.getLocalHost(); 			//实例化对象
			String localname = ip.getHostName(); 		//获取本机名
			String localip = ip.getHostAddress(); 		//获取本机IP地址
			System.out.println("本机名:" + localname);	//将本机名输出
			System.out.println("本机IP地址:" + localip); 	//将本机IP地址输出
		} catch (UnknownHostException e) {
			e.printStackTrace(); 						//输出异常信息
		}
	}
}
//例题20.1

服务器

package twentyoneth;

import java.io.*;
import java.net.*;

public class MyServer {
	private ServerSocket server; // 服务器套接字
	private Socket socket; // 客户端套接字

	void start() {// 启动服务器
		try {
			server = new ServerSocket(8998); // 服务器启用8998端口
			System.out.println("服务器套接字已经创建成功");
			while (true) {
				System.out.println("等待客户端的连接");
				socket = server.accept(); // 服务器监听客户端连接
				// 根据套接字字节流创建字符输入流
				BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
				while (true) {// 循环接受信息
					String message = reader.readLine();// 读取一行文本
					if ("exit".equals(message)) {// 如果客户端发来的内容为“exit”
						System.out.println("客户端退出");
						break;// 停止接受信息
					}
					System.out.println("客户端:" + message);
				}
				reader.close(); // 关闭流
				socket.close(); // 关闭套接字
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		MyServer tcp = new MyServer();
		tcp.start(); // 启动服务器
	}
}
//21.2

客户

package twentyoneth;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.Socket;
import javax.swing.*;

public class MyClient extends JFrame {
	private PrintWriter writer;// 根据套接字字节流创建的字符输出流
	Socket socket; // 客户端套接字
	private JTextArea area = new JTextArea();// 展示信息的文本域
	private JTextField text = new JTextField(); // 发送信息的文本框

	public MyClient() {
		setTitle("向服务器送数据");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container c = getContentPane(); // 主容器
		JScrollPane scrollPane = new JScrollPane(area);// 滚动面板
		getContentPane().add(scrollPane, BorderLayout.CENTER);
		c.add(text, "South"); // 将文本框放在窗体的下部
		text.addActionListener(new ActionListener() {// 文本框触发回车事件
			public void actionPerformed(ActionEvent e) {
				writer.println(text.getText().trim()); // 将文本框中的信息写入流
				area.append(text.getText() + '\n'); // 将文本框中的信息显示在文本域中
				text.setText(""); // 将文本框清空
			}
		});
	}

	private void connect() { // 连接服务器方法
		area.append("尝试连接\n"); // 文本域中提示信息
		try {
			socket = new Socket("127.0.0.1", 8998); // 连接本地计算机的8998端口
			writer = new PrintWriter(socket.getOutputStream(), true);
			area.append("完成连接\n");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		MyClient clien = new MyClient();
		clien.setSize(200, 200); // 窗体大小
		clien.setVisible(true); // 显示窗体
		clien.connect(); // 连接服务器
	}
}
//21.2

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#多线程开发之----List Task有返回值

C#中的List<T>是一个泛型集合类&#xff0c;可以用来存储任意类型的元素。在多线程环境下&#xff0c;可以使用Task<TResult>类来执行异步操作并返回结果。通过将List<T>与Task<TResult>结合使用&#xff0c;可以实现多线程处理带有返回值的操作&#…

系统运维安全之病毒自检及防护

一、前言 Linux勒索病毒&#xff08;Linux ransomware&#xff09;是一种最令人恶心的计算机恶意病毒&#xff0c;它以侵入Linux系统&#xff0c;捆绑文件并要求支付赎金才能释放文件为主要目的&#xff0c;破坏用户的数据&#xff0c;造成数据讹诈。Linux勒索病毒它们的存在已…

轻松入门性能测试:打造高效稳定的应用系统!

性能测试乍一听&#xff0c;好像是很高大上&#xff0c;不过也确实很高大上&#xff0c;一般的测试人员&#xff0c;没有经过专门的训练的话&#xff0c;可能都难以理解性能里面的一些术语。 本文是小马哥从教学和答疑的过程中总结出的一些关于性能测试的简单理解&#xff0c;…

网工学习10-IP地址

一、IP地址概念 IP地址是一个32位的二进制数&#xff0c;它由网络ID和主机ID两部份组成&#xff0c;用来在网络中唯一的标识的一台计算机。网络ID用来标识计算机所处的网段&#xff1b;主机ID用来标识计算机在网段中的位置。IP地址通常用4组3位十进制数表示&#xff0c;中间用…

求臻医学胃癌关爱日:美味的高“盐”值杀手

胃癌的发病率具有广泛的地域差异&#xff0c;在东南亚国家尤为高发。韩国是胃癌发病率排名第一的国家&#xff0c;其次为日本&#xff0c;中国紧随其后&#xff0c;由于中国人口基数大&#xff0c;其绝对患胃癌人数为全球第一&#xff0c;每年有100多万新诊断患者&#xff0c;其…

文件批量管理技巧:高效移动文件并创建文件夹,按数量分类的重要性

在日常生活和工作中&#xff0c;经常会遇到大量的文件要管理。这些文件可能存储在电脑的硬盘、外部存储设备或是云存储中。如何高效地管理这些文件&#xff0c;以便能够快速找到所需的资料&#xff0c;是一项非常重要的技能。本文讲解云炫文件管理器如何批量管理文件的技巧&…

【数据结构】链表OJ题(顺序表)(C语言实现)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

制造业需要MES与ERP的整合

MES与ERP整合 在当今的制造环境中&#xff0c;这不是 MES 与 ERP 的对比&#xff1b;MES 和 ERP 一起带来了两个系统都无法单独提供的操作清晰度。 ERP 专注于创建和管理工厂计划&#xff0c;包括生产、材料使用、交付和运输&#xff0c;以及收集相关业务的信息。另一方面&…

数据可视化工具选择:功能、易用性与安全性

作为一名数据可视化大屏设计师&#xff0c;我深知选择一款合适的数据可视化工具对于提高工作效率和呈现效果的重要性。下面&#xff0c;我将从真正对我们数据可视化大屏设计师有用的角度为大家介绍选择数据可视化工具的一些必要条件和要求。 1. 功能强大与灵活定制 首先&…

Python语言基础学习大纲(由某大模型生成)

自从上次经丙察察游了一次滇藏线&#xff0c;已有3个没写一篇了。今天利用由某大模型生成的上面这张思维导图&#xff0c;配合这个大模型生成的6000多字拼凑出一篇博文聊以交差。 Python语言概述 一、语言特点 1.语法简单明了 Python的语法简洁易懂&#xff0c;使得编写代码…

双列集合 Map常见的API Map遍历方式 HashMap LinkedHashMap treeMap

目录 双列集合双列集合的特点 双列集合体系结构Map常见的APIMap遍历方式Map的遍历方式一(键找值)遍历方式二键值对遍历方式三lambda表达式 HashMap练习1练习二LinkedHashMapTreeMapTreeMap练习1二三 双列集合 双列集合可以记录两个元素.一个称为键一个称为值.合称为键值对,又叫…

C语言-详解指针

目录 一.内存 1.内存的定义 2.内存的结构图 二.地址 1.什么是地址 2.什么是变量的地址 三.什么是指针 1.指针的定义 四.如何获取数据存储空间的地址 1.&运算符 五.指针变量 1.什么是指针变量&#xff08;一级指针变量&#xff09; 2.指针变量的定义 3…

LLM之Agent(四)| AgentGPT:一个在浏览器运行的Agent

AgentGPT是一个自主人工智能Agent平台&#xff0c;用户只需要为Agent指定一个名称和目标&#xff0c;就可以在浏览器中链接大型语言模型&#xff08;如GPT-4&#xff09;来创建和部署Agent平台。 PS&#xff1a;目前agentGPT仅支持chatgpt模型&#xff0c;暂时不支持本地llm模…

数字串最大乘积切分(动态规划)

不得不说&#xff0c;动态规划是真的骚 题解已经在图片里面了 代码如下&#xff1a; #include<stdio.h> long long gethnum(long long n);int main(void) {//定义变量并输入int N, M;long long dp[19][7] {0}, num[20][20] {0};scanf("%d%d", &N, &am…

2023年【A特种设备相关管理(锅炉压力容器压力管道)】考试内容及A特种设备相关管理(锅炉压力容器压力管道)复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试内容根据新A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将A特种设备相关管理…

【数据中台】开源项目(5)-Amoro

介绍 Amoro is a Lakehouse management system built on open data lake formats. Working with compute engines including Flink, Spark, and Trino, Amoro brings pluggable and self-managed features for Lakehouse to provide out-of-the-box data warehouse experience,…

Salesforce认证考试,这5招让你轻松过关!

认证是很多求职者获得第一份Salesforce工作的敲门砖。认证不仅是个人能力的体现&#xff0c;而且在学习备考的过程中&#xff0c;可以更系统地梳理知识&#xff0c;了解最新的产品和功能&#xff0c;对Salesforce有更全面和深入的认识。 大多数Salesforce从业者都至少持有一项…

Maxwell学习笔记

1 概述 Maxwell 是由美国 Zendesk 开源&#xff0c;用 Java 编写的 MySQL 实时抓取软件。 实时读取MySQL 二进制日志 Binlog&#xff0c;并生成 JSON 格式的消息&#xff0c;作为生产者发送给 Kafka&#xff0c;Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台…

多线程--11--ConcurrentHashMap

ConcurrentHashMap与HashMap等的区别 HashMap线程不安全 我们知道HashMap是线程不安全的&#xff0c;在多线程环境下&#xff0c;使用Hashmap进行put操作会引起死循环&#xff0c;导致CPU利用率接近100%&#xff0c;所以在并发情况下不能使用HashMap。 ConcurrentHashMap 主…

UVM实现component之间transaction级别的通信

my_model是从i_agt中得到my_transaction&#xff0c;并把 my_transaction传递给my_scoreboard。在UVM中&#xff0c;通常使用TLM&#xff08;Transaction Level Modeling&#xff09;实现component之间transaction级别 的通信。 在UVM的transaction级别的通信 中&#xff0c;数…