网络程序设计

news2024/11/28 8:39:38

互相连接,发送信息

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

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

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

相关文章

利用github copilot完成代码,利用正则化完成字符串中信息查找

利用正则化完成字符串中的字符拆解。 下面的代码是实现在“计算机组成原理-计科2101-123456-小明同学.docx”中提取出班级(grade),学号(id),姓名(name)。以下的代码都是github copi…

java中Random随机数使用和生成随机数的多个示例

在 Java 中,我们可以使用 java.util.Random 类生成伪随机数。伪随机数的特性是,虽然它们看起来是随机的,但实际上它们是由一个固定的算法生成的。只要我们提供相同的种子,这个算法就会生成相同的数字序列。 首先,我们…

Java链接数据库

本文介绍的是Java链接数据库中的JDBC操作,JDBC虽然现在用的不多,但面试的时候会问道。需要有相应的了解。下面以链接MySQL为例子。 JDBC 什么jdbc Java DataBase Connectivity是一种用于执行SQL语句的Java API,它由一组用Java语言编写的类和…

pod容器内无法访问集群外部主机ipv6地址

一、背景 同事反馈他这边有一环境出现pod容器内无法请求集群外部主机ipv6地址,但是在pod所在集群所主机上是可以请求到外部主机ipv6地址。 二、问题处理过程 首先主机和主机之间ipv6地址能通讯,说明主机之间网络是没啥问题,哪问题就出在容器…

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

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

邮件群发工具的功能:实用性与高效率功能推荐

市场营销对于每个企业来讲都至关重要,他能为企业带来商机的增长,获得持续的收益。邮件营销作为一种传统但是较少为众多行业使用的营销手段,同样也存在着无限的潜力。 它可以实现: 精准点对点个性化营销。数据报表追踪营销效果。…

如果不小心修改了按钮的名字并且忘记了原名字

出现上述情况,可以右边点击转到代码,注释掉问题行,此页的设计界面就恢复了。

Taro 学习教程 - - - - - 开发环境的安装 helloworld

一、Taro脚手架安装 npm install tarojs/cli -g // or yarn add tarojs/cli -g // or cnpm install tarojs/cli -g1.1 如何判断taro安装成功 taro -v正常安装成功之后显示如图: 1.2 环境变量配置(自行判断是否需要手动配置) 如果遇到如下问题,则是需要…

顶级资源!五个免费图标素材网站

图片太花哨了,纯文本太单调了?别忘了设计师的魔法武器——图标!图标材料是UI设计师不可缺少的一部分。优秀的图标设计不仅可以提高界面美感,还可以提高用户的互动体验,帮助用户更好地了解应用程序的功能和信息。在本文…

2024年CSC国际区域问题研究及外语高层次人才培养项目介绍

国家留学基金委(CSC)公布了2024年国际区域问题研究及外语高层次人才培养项目,申报时间均为3月中下旬。为帮助关注者了解项目申报情况,知识人网小编特整理本文。 近日,国家留学基金委(CSC)公布了…

P4715 【深基16.例1】淘汰赛-仅思路

首先从题干要求入手,我们可以了解到题目要求是二进一,不难想到这是二叉树的题 再来,从题干可以知道,我们所采用的结构体除了需要有树的两个左右节点指针外,还需要两个变量用来储存“能力值”和“编号” 在这道题中&am…

回归预测 | MATLAB实现CNN-BiLSTM(卷积双向长短期记忆神经网络

效果一览 基本介绍 提出一种同时考虑时间与空间因素的卷积-双向长短期记忆( CNN-BiLSTM)模型,将具有空间局部特征提取能力的卷积神经网络(CNN)和具有能同时考虑前后方向长时间信息的双向长短期记忆&#xf…

BL121EN:IEC 61850到OPC UA的即插即用无缝转换解决方案

添加图片注释,不超过 140 字(可选) 在当今快速发展的工业自动化领域,实现不同通信协议之间的无缝连接是提高系统集成度、数据共享和设备互操作性的关键。钡铼技术(Bay-Tech)BL121EN硬网关应运而生&#xf…

YOLOv4 学习笔记

文章目录 前言一、YOLOv4贡献和改进二、YOLOv4核心概念三、YOLOv4网络架构四、YOLOv4数据增强五、YOLOv4的损失函数总结 前言 在近年来的目标检测领域,YOLOv4的出现标志着一个重要的技术突破。YOLOv4不仅继承了YOLO系列快速、高效的特点,还引入了一系列…

HarmonyOS开发基础(一)

HarmonyOS开发基础(一) // :装饰器:用来装饰类结构、方法、变量 Entry // Entry:标记当前组件为入口组件 Component // Component:标记为自定义组件 // struct:自定义组件,可复用的…

羊大师带大家探寻,南北地区冬季饮食的差异

羊大师带大家探寻,南北地区冬季饮食的差异 南北地区的冬季饮食有着明显的不同。随着气温的骤降,人们的餐桌上也逐渐变得丰盛起来。精心准备的美食不仅温暖了身心,更能带来满满的幸福感。接下来,让小编羊大师带大家一起走进南北饮…

一文带你了解Java中synchronized原理

🌈🌈🌈今天给大家分享的是Java中 synchronized 的基本原理 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流&#xff…

Windows(Microsoft)win电脑装Xcode方法

你想在你的Windows电脑上体验和使用苹果的Xcode进行应用打包。遗憾的是,Xcode官方只支持macOS操作系统,但别担心,我们有替代方案可以让你在Windows环境下进行iOS应用的开发和打包。接下来我将指导你如何实现这一目标。 图片来源:W…

基于Java swing 学生选课成绩管理系统

Java swing 学生选课成绩管理系统 在SQL Server下建库、建表、建约束、建视图、建触发器、建角色、建用户等,并录入必要的数据。 编程实现至少3个模块 登录模块:输入用户名、密码,选择身份(通过检索出数据库里现有的用户身份&…

Leetcode题库(数据库合集)_ 难度:简单

目录 难度:简单1. 组合两个表2. 第二高的薪水3. 第N高的薪水4. 分数排名5. 连续出现的数字6. 超过经理收入的员工7. 重新8. 寻找用户推荐人9. 销售员10. 排名靠前的旅行者11. 患某种疾病的患者12. 修复表中的名字13. 求关注者的数量14. 可回收且低脂的产品15. 计算特…