Java学习:网络编程

一、TCP编程

1.服务器端建立通讯(ServerSocket的使用)

  • 服务器建立通讯ServerSocket。
  • 服务器建立Socket等待客户端连接并接收。
  • 建立IO输入流读取客户端发送的数据和向客户端发送数据。

  具体代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(8888);//8888表示服务器要监听的端口,等待客户端连接。//如果8888端口已经被其他进程占用,则会抛出异常IOException。System.out.println("启动服务器....");Socket s = ss.accept();//接受客户端连接,Socket套接口对象。System.out.println("客户端:"+s.getInetAddress().getLocalHost()+"已连接到服务器");//getInetAddress()返回客户端IP地址,getLocalHost()返回域名和IP地址。BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//读取客户端发送来的消息。String mess = br.readLine();System.out.println("客户端:"+mess);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//向客户端发送消息。bw.write(mess+"\n");bw.flush();} catch (IOException e) {e.printStackTrace();}}
}

        ServerSocket不是一种Socket,它可以监听服务器端口(端口号对应着某个应用程序),来获取客户端的连接情况,通过接收客户端连接来建立Socket。如果监听端口已经被其他进程占用,则会抛出异常IOException。

2.客户端建立通讯(Socket)

  • 创建Socket通信,设置通信服务器的IP和Port
  • 建立IO输出流向服务器发送数据消息和读取服务器发送来的数据消息

    具体代码:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class Client {public static void main(String[] args) {try {Socket s = new Socket("127.0.0.1",8888);//127.0.0.1为要进行通讯的服务器IP,8888为要客户端连接到的服务器端口//客户端发起Https通讯要走传输层端口号443,而http通讯则是80端口。//而服务器端端口号是指定的,不是固定的。//构建IOInputStream is = s.getInputStream();OutputStream os = s.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));//向服务器端发送一条消息bw.write("测试客户端和服务器通信,服务器接收到消息返回到客户端\n");bw.flush();//读取服务器返回的消息BufferedReader br = new BufferedReader(new InputStreamReader(is));String mess = br.readLine();System.out.println("服务器:"+mess);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
}

        Socket建立TDP连接,绑定服务器IP地址和指定服务器端口,与服务器建立连接。当服务器地址不正确或无法识别时,会抛出UnknownHostException异常,当Socket等待连接超时会抛出SocketTimeoutException异常,当服务器端口被占用无法绑定端口时,会抛出BindException异常,当服务器没有启动,没有监听对应端口或拒绝连接时,会抛出ConnectException异常,它们都是IOException的直接或间接子类

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

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

相关文章

CTFSHOW sqll注入

号过滤绕过 号和不加通配符的 like 是一样的。 还可以使用 < >号来绕过&#xff0c;<> 在mysql中等于! 如果在加一个! 双重否定代表肯定 就是了 空格过滤绕过 /**/ &#xff0c;()&#xff0c;&#xff0c;tab&#xff0c;两个空格 or and xor not 过滤绕过 a…

java JDBCUtils 使用静态代码块连接数据库 全程值保持一次连接

\src\com\data\entity\JDBCUtils.java 使用静态代码块连接数据库 全程值保持一次连接 package com.data.entity;import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource;import javax.sql.DataSource;pub…

正点原子linux应用编程——入门篇2

系统信息与系统资源 本章重点学习如何通过Linux系统调用或C库函数获取系统信息&#xff0c;譬如获取系统时间、日期 以及设置系统时间、日期等&#xff1b;除此之外&#xff0c;还会学习Linux系统下的/proc虚拟文件系统&#xff0c;包括/proc 文件系统是什么以及如何从/proc文…

【APUE】进程间通信

目录 一、管道 1.1 匿名管道 1.2 命名管道 二、XSI IPC 2.1 概述 2.2 消息队列 2.2.1 msgget 2.2.2 msgsnd 2.2.3 msgrcv 2.2.4 msgctl 2.2.5 代码示例 2.3 信号量数组 2.3.1 semget 2.3.2 semop 2.3.3 semctl 2.3.4 代码示例 2.3 共享内存 2.3.1 shmget…

selenium已知一个元素定位同级别的另一个元素

1.需求与实际情况 看下图来举例 &#xff08;1&#xff09;需求 想点击test22&#xff08;即序号-第9行&#xff09;这一行中右边的“复制”这一按钮 &#xff08;2&#xff09;实际情况 只能通过id或者class定位到文件名这一列的元素&#xff0c;而操作这一列的元素是不…

Kubernetes之kubeadm日志展示篇—fiendweb日志展示平台部署

fiendweb 部署 1.1 下载镜像 docker pull adockero/finderweb1.2 启动容器 编写容器启动脚本 # cat finderweb.sh #!/bin/bash docker run -itd -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -v /opt/logs/gfs:/data --networkhost --name finderweb…

零基础可以学编程吗,不懂英语怎么学编程,中文编程工具实例

零基础可以学编程吗&#xff0c;不懂英语怎么学编程&#xff0c;中文编程工具实例 上图是中文编程工具界面、标尺实例。 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#x…

剑指 Offer(第2版)面试题 6:从尾到头打印链表

剑指 Offer&#xff08;第2版&#xff09;面试题 6&#xff1a;从尾到头打印链表 剑指 Offer&#xff08;第2版&#xff09;面试题 6&#xff1a;从尾到头打印链表解法1&#xff1a;遍历解法2&#xff1a;递归解法3&#xff1a;栈 剑指 Offer&#xff08;第2版&#xff09;面试…

基于单片机体温心率脉搏检测仪系统设计

**单片机设计介绍&#xff0c; 基于单片机体温心率脉搏检测仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机体温心率脉搏检测仪是一种用于检测人体体温、心率和脉搏等基本生理指标的医疗设备。下面是一个简要…

QT 界面切换

先新建一个Widget工程 ui界面设置如下 在添加一个QT设计师界面类 右键点击添加 第二个UI界面设置如下 代码 链接&#xff1a;https://pan.baidu.com/s/1ovDIG2pno9mJ7mMFh2tq3Q 提取码&#xff1a;6q3m –来自百度网盘超级会员V2的分享

Java八股文面试全套真题【含答案】- Linux篇

以下是一些关于Linux语言的经典面试题以及它们的答案&#xff1a; 什么是Linux操作系统&#xff1f; 答案&#xff1a;Linux是一种开源的类Unix操作系统&#xff0c;主要用于服务器和嵌入式设备。它是由Linus Torvalds和众多社区开发者共同开发和维护的。什么是Linux内核&…

python+pytest接口自动化(2)-HTTP协议基础

HTTP协议简介 HTTP 即 HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09;&#xff0c;是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。 设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议在 OSI 模型…

1_Scene渲染流程分析

参考: Cesium原理篇&#xff1a;6 Render模块(4: FBO) Scene渲染流程分析 // Scene.js function render(scene, time) {//...// 1) 渲染到哪里?// updateAndExecuteCommands -> executeCommandsInViewport -> updateAndClearFramebuffersupdateAndClearFramebuffers()…

计算机体系结构----循环展开(Loop Unrolling)

循环展开&#xff08;loop unrolling&#xff09;是一种编译器优化技术&#xff0c;它通过减少循环的迭代次数&#xff0c;来提高程序的执行速度。循环展开的原理是&#xff0c;将循环体中的语句复制多份&#xff0c;每次迭代执行更多的语句&#xff0c;从而减少循环控制语句&a…

vue3 + element-plus + ts el-table封装

vue3 element-plus ts el-table封装 博客参考https://blog.csdn.net/weixin_45291937/article/details/125523244 1. 文件位置&#xff08;根据自己的需求&#xff09; 2. 在 custom 文件夹下面 创建 mytable 文件夹 3. 直接上代码 // index.vue<template><div …

总结Python中with方法有哪些作用

with 语句在 Python 中有多种用途&#xff0c;主要用于创建上下文环境&#xff0c;在进入和离开代码块时执行特定的操作。最常见的用途之一是在文件处理中自动关闭文件&#xff0c;但它还可以用于其他需要资源管理的情况。 1. 文件操作 在文件操作中&#xff0c;使用 with 语句…

Python实现WOA智能鲸鱼优化算法优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

CloudCompare简单开发

一、概述 CloudCompare如何进行二次开发&#xff1f;_cloudcompare 二次开发-CSDN博客 开发一个功能&#xff0c;在原始CC的基础上添加一个拓展功能&#xff0c;如下&#xff1a; 二、功能开发 1、修改MainWindow.UI 重点是&#xff1a;要编译&#xff0c;不然在mainwindow.…

JAVA进阶之路JVM-2:类加载机制,类的生命周期,类加载过程,类加载时机,类加载器,双亲委派模型,对象创建过程

JVM类加载机制 类加载 ​ 在JVM虚拟机实现规范中&#xff0c;通过ClassLoader类加载把*.class字节码文件&#xff08;文件流&#xff09;加载到内存&#xff0c;并对字节码文件内容进行验证&#xff0c;准备&#xff0c;解析和初始化&#xff0c;最终形成可以被虚拟机直接使用…

点盾云出现“操作失败,错误码1002”如何解决?

在使用点盾云学习看课时&#xff0c;老师会先将视频或者是在线播放链接发给我们&#xff0c;我们通过下载文件的方式或通过直接在线点播的形式来观看&#xff0c;那么在操作的过程中&#xff0c;有时候我们会遇到一些问题&#xff0c;今天以百度网盘中下载的视频文件为例&#…