JAVA2核心技术卷II -- 第3章. 网络

1. 基本Socket链接

    Socket s = new Socketserver, port);

    try {

        InputStream inStream = s.getInputStream();

        Scanner in = new Scanner(inStream);

        while (in.hasNextLine()) {

            String line = in.nextLine();

        }

    } finally {

        s.close();

    } 

2. 服务器编写

    ServerSocket s = new ServerSocket(port);

    Socket incoming = s.accept();

    try {

        InputStream inStream = incoming.getInputStream();

        OutputStream outStream = incoming.getOutputStream();

        Scanner in = new Scanner(inStream);

        PrintWriter out = new PrintWriter(outStream, true /* autoFlush */);

        out.println("Hello! Enter BYE to exit.");

        boolean done = false;

        while (!done && in.hasNextLine()) {

            String line = in.nextLine();

            out.println("Echo: " + line);

            if (line.trim().equals("BYE")) {

                done = true;

            }

        }

    } finally {

        incoming.close();

    }

3. 提供多线程访问的服务器

    ServerSocket s = new ServerSocket(port);

    while(true) {

        Socket incoming = s.accept();

        Runnable r = new ThreadedEchoHandler(incoming);

        Thread t = new Thread(r);

        t.start();

    }

    class ThreadedEchoHandler implements Runnable {

        public ThreadedEchoHandler(Socket i) {

            incoming = i;

        }

        public void run() {like up}

    }

4. 发送Mail

    Socket s = new Socket(mailServerName, port);

    InputStream inStream = s.getInputStream();

    OutputStream outStream = s.getOutputStream();

    in = new Scanner(inStream);         

    out = new PrintWriter(outStream, true /* autoFlush */);

    String hostName = InetAddress.getLocalHost().getHostName();

    receive();

    send("HELO " + hostName);

    receive();

    send("MAIL FROM: <" + from.getText() + ">");

    receive();

    send("RCPT TO: <" + to.getText() + ">");

    receive();

    send("DATA");

    receive();

    send(message.getText());

    send(".");

    receive();

    s.close();

    public void send(String s) throws IOException {  

        comm.append(s);

        comm.append("\n");

        out.print(s.replaceAll("\n", "\r\n"));

        out.print("\r\n");

        out.flush();

    }

    public void receive() throws IOException {

        if (in.hasNextLine()) {

            String line = in.nextLine();

            comm.append(line);

            comm.append("\n");

        }

    }

5. 通过URL连接获取服务器信息

    URL url = new URL(urlName);    //新建URL对象

    URLConnection connection = url.openConnection();    //打开URL连接

    connection.setRequestProperty("Authorization", "Basic " + encoding);    //设置用户名和密码访问属性

    connection.connect();    //开始连接

    Map<String, List<String>> headers = connection.getHeaderFields();    //返回header的所有键值对

    for (Map.Entry<String, List<String>> entry : headers.entrySet()) {

        String key = entry.getKey();    //得到键

        for (String value : entry.getValue())

            System.out.println(key + ": " + value);    //得到值

    }

    System.out.println("getContentType: " + connection.getContentType());    //获取内容类型,比如text/plain

    System.out.println("getContentLength: " + connection.getContentLength());    //返回内容长度

    System.out.println("getContentEncoding: " + connection.getContentEncoding());    //获取内容编码,比如gzip

    System.out.println("getDate: " + connection.getDate());    //获取创建时间

    System.out.println("getExpiration: " + connection.getExpiration());    //获取过期时间

    System.out.println("getLastModifed: " + connection.getLastModified());    //获取最后修改时间

    Scanner in = new Scanner(connection.getInputStream());

    for (int n = 1; in.hasNextLine() && n <= 10; n++)    //打印前10行内容

        System.out.println(in.nextLine());

6. 提交表单到服务器

    GET方式: 将参数附在URL结尾,空格由+来代替,但是参数长度有限制

    POST方式: 通过表单进行数据提交

    注意: URLEncoder具有encode(String s, String encoding)和decode(String s, String encoding)方法

    URL url = new URL(urlString);

    URLConnection connection = url.openConnection();

    connection.setDoOutput(true);    //建立一个用于输出的连接

    PrintWriter out = new PrintWriter(connection.getOutputStream());    //使用该流向服务器发信息

    boolean first = true;

    for (Map.Entry<String, String> pair : nameValuePairs.entrySet()) {  

        if (first) first = false; 

        else out.print('&'); 

        String name = pair.getKey();

        String value = pair.getValue();

        out.print(name);

        out.print('=');

        out.print(URLEncoder.encode(value, "UTF-8"));

    }    //向输出流加入参数

    out.close();

    //得到返回信息    

    Scanner in;

    StringBuilder response = new StringBuilder();

    try {

        in = new Scanner(connection.getInputStream());

    } catch (IOException e) {

        if (!(connection instanceof HttpURLConnection)) throw e;

        InputStream err = ((HttpURLConnection)connection).getErrorStream();

        if (err == null) throw e;

        in = new Scanner(err);

    }

    while (in.hasNextLine()) {

        response.append(in.nextLine());

        response.append("\n");

    }

    in.close();

    return response.toString();

7. 套接字超时

    SocketChannel channel = SocketChannel.open(new InetSocketAddress("localhost", 8189));    //超时或者中断,会有InterrputedException抛出

8. 半关闭

    当一个请求给服务器发送信息,服务器必须知道该请求什么时候结束,所以需要关闭一个套接字的输出流,来表示数据已经发送结束

    Socket socket = new Socket(host, port);

    Scanner in = new Scanner(socket.getInputStream());

    PrintWriter writer = new PrintWriter(socket.getOutputStream());

    writer.print(...);

    writer.flush();

    socket.shutdownOutput();    //关闭输出流

    while (in.hasNextLine() != null) {String line = in.nextLine();}    //读返回数据

    socket.close();    //关闭整个socket

9. 通过主机名得到IP地址

    InetAddress[] address = InetAddress.getAllByName(host);    //有时主机名对应的地址不止一个,所以用数组来获取

    for (InetAddress a : address)    print address

    InetAddress address = InetAddress.getLocalHost();    //得到本机地址,而不是127.0.0.1,而是对外的IP地址

Java2核心技术卷2:高级特性 第7版 中文高清 PDF JAVA经典巨著 经久不衰 part02 立即下载

相关推荐

Java核心技术 卷II 高级特性(原书第9版) 完整中文版

Java核心技术 卷II 高级特性(原书第9版) 完整中文版.pdf

JAVA2核心技术卷II:高级特性(原书第7版) -- 第3章. 网络

1. 基本Socket链接    Socket s = new Socketserver, port);    try {        InputStream inStream = s.getInputStream();        Scanner in = new Scanner(inStream);        while (in.hasNextLine()) {

overkill的专栏 584

Java核心技术 卷II 高级特性 原书第9版(高清详细书签完整版)

Java核心技术 卷II 高级特性 原书第9版(高清详细书签完整版)

《Java核心技术·卷 II》知识点精粹总结

《Java核心技术·卷 II》是Java高级开发的实战指南,重点讲解文件I/O、网络编程、数据库连接等核心API。文件I/O部分涵盖传统的流式操作和高效的NIO技术;网络编程介绍Socket通信和HTTP客户端;数据库章节详解JDBC的使用规范和安全实践。此外还涉及XML处理、国际化、安全加密等企业级开发必备技能。通过系统学习这些"官方武器库",开发者能构建功能强大、安全可靠的应用系统,全面掌握Java平台的高级特性。

千里之外的专栏 634

《Java核心技术 卷II 高级特性(原书第9版)》(完整中文版)

《Java核心技术 卷II 高级特性(原书第9版)》(完整中文版)

JAVA.2核心技术.卷II:高级特性(原书第7版) 源代码.rar

《JAVA.2核心技术.卷II:高级特性(原书第7版)》一书源代码。

2025/03/23 ​《Java核心技术·卷I(原书第11版)》Java核心技术·卷II(原书第11版):高级特性》凯·S.霍斯特曼(Cay S. Horstmann)书籍阅读

2025/03/23 ​《Java核心技术·卷I(原书第11版)》Java核心技术·卷II(原书第11版):高级特性》凯·S.霍斯特曼(Cay S. Horstmann)书籍阅读

weixin_45428910的博客 1549

《JAVA2核心技术第7版卷2高级特性》PDF

《JAVA2核心技术第7版卷2高级特性》

Java编程的终极导航:《Java核心技术》系列全面解读

在编程世界中,Java的位置无可替代,无论是企业级应用、移动应用开发,还是大数据处理,Java都扮演着重要的角色。对于刚刚踏入这个领域的新手来说,有一条清晰的路线图是非常必要的;而对于经验丰富的开发者而言,及时更新知识库、了解新技术同样重要。这时,`《Java核心技术 卷I:开发基础(原书第12版)》`与`《Java核心技术 卷II:高级特性(原书第12版)》`便是你的灯塔,为你的Java学习之旅指引方向

hacker707的博客 2万+

Typora绘制思维导图

我们观察一下,其实思维导图就是树状结构的数据嘛,作为程序员,拿语言写树状结构的数据是很平常的事情。而且写代码可比画图省事多了,查阅资料可以知道,有一种`mermaid`语法,就是做这件事情的,支持 UML,甘特图,流程图等。

Peter Cheung的博客 7933

测试dali协议的软件,DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议

DALI2.0和DALI1.0完美兼容同一个模块,测试每项可过协议深圳聚积智能 夏先生 13246760327 QQ 349098308■IEC62386-102(V2.0)通过测试内容IEC62386-102/2.1/Test preambleIEC62386-102/3.1/Polarity testIEC62386-102/3.2/Maximum and minimum system v...

weixin_35343788的博客 1351

Java核心技术卷II:高级特性

网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”) 购买正版 封页 内容简介 本书是Java领域有影响力和价值的著作之一,由拥有20多年教学与研究经验的Java技术专家撰写(获Jolt大奖),与《Java编程思想》齐名,10余年全球畅销不衰,广受好评。第10版...

CiCi岛的专栏 5599

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5279

新书推荐 | Java核心技术 卷II 高级特性(原书第11版)

新书推荐《Java核心技术 卷II 高级特性(原书第11版)》长按二维码了解及购买全新第11版!针对Java SE9、10、11全面更新!Java领域极具影响力和价值的著作之一,与《Ja...

华章IT官方博客 2683

转录组PCA分析3大常见误区:数据标准化、离群样本与批次效应处理

本文深入探讨转录组PCA分析中的三大常见误区:数据标准化、离群样本识别与批次效应处理。通过实战案例和R代码演示,揭示如何优化PCA结果以提升生物学解释力,特别关注数据标准化策略的选择和批次校正方法的应用,帮助研究者避免常见陷阱并获得可靠的转录组分析结果。

weixin_28362173的博客 372

Altium Designer 18 将Gerber文件逆向转换成PCB(详细记录)

自己看了网上的教程,弄了很久,估计还有不足的地方,但是先把思路理一理(初学AD) 同时遇到了许多问题: 不是AD导出的Gerber估计不能自动识别层 要自己设置层顺序 要有钻孔文件数据制作NC工具(我也不懂是怎么说,就是size尺寸的) 这里记录一下,以防忘记。 正常顺序: 1.新建CAM 2.导入Gerber,选择CAM文件夹下的所有文件导入 3.设置层属性和物理顺序 4.设置NC工具 5.提取网络表 ...

lb_monkey的博客 1万+

Java 核心技术 卷II 高级特性 第4章网络

4.1 连接到服务器 4.1.1 使用telnet 4.1.2 用Java连接到服务器 package socket; import java.io.*; import java.net.*; import java.util.*; /** * This program makes a socket connection to the atomic clock in Bou...

dldldl1994的博客 234

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

java核心技术 pdf_阿里P8高级技术专家携这份818页Java核心技术重磅来袭

前言Java语言今年已经25岁了,仍常年稳坐各大编程语言榜单前列,一直是大多数开发者心中最流行的编程语言。 Java工程师的就业面广、薪资高,这得益于 Java 语言优良的关键特性。现在越来越多的人仍旧不断地加入到学习 Java 的队伍中来,小编在此就给大家带来一本书《Java核心技术 卷 II》涵盖入门到精通!助你顺利进大厂!需要这本书籍文档的朋友可以关注后私信“666”或“111”即可目录第一...

weixin_39725924的博客 126

华为OD机试真题 新系统 - 计算数列位置N的值 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2009

大模型微调部署实战及类GPT工具的高效使用

本文主要介绍了专栏《大模型微调部署实战及类GPT工具的高效使用》的核心内容,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 专栏亮点 3. 你的收获 4. 详细目录

herosunly的博客 22万+

《Java核心技术 卷II 高级特性(原书第9版)》

《Java核心技术 卷II 高级特性(原书第9版)》 基本信息 原书名:Core Java Volume II—Advanced Features(Ninth Edition) 作者: (美)Cay S. Horstmann Gary Cornell 译者: 陈昊鹏 王浩 姚建平 丛书名: Java核心技术系列 出版社:机械工业出版社 ISBN:9787111442509...

weixin_30298497的博客 276

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java核心技术卷2 第9版 pdf,Java核心技术 卷II 高级特性(原书第9版) PDF

资源名称:Java核心技术 卷II 高级特性(原书第9版) PDF第1章 流与文件 11.1 流 11.1.1 读写字节 11.1.2 完整的流家族 31.1.3 组合流过滤器 71.2 文本输入与输出 101.2.1 如何写出文本输出 101.2.2 如何读入文本输入 131.2.3 ...

weixin_42223120的博客 808

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【笔记】《Java核心技术(第九版)》卷1-第1章-Java程序设计概述

第1章 Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 简单性 2)面向对象 3)网络技能(Network-Savvy) 4)健壮性 5)安全性 6)体系结构中立 7)可移植性 8)解释型 9)高性能 10)多线程 11)动态性 1.2.1 简单性 Java语法是C++语法的一个“纯净版本”。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操作符...

ZeromaXHe的博客 408

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java 核心技术卷 II(第 8 版) – 读书笔记 – 第 1 章(上)

1、输入流:可以从中读取一个字节。InputStrean 输出流:可以向其中写入一个字节。OutputStream 2、流来源、去处可能是文件,也可能是网络等。 3、由于 Unicode 多个字节表示一个字,所以不可能用流读取 Unicode 编码的文件。因此引入了 Reader 和 Writer 处理他们(基于双字节)。 4、基础的流只有两个:InputStream 和 OutputStrea...

淡定_蜗牛的博客 244
上一篇: JAVA2核心技术卷II -- 第2章. 集合
下一篇: JAVA2核心技术卷II -- 第4章. 数据库编程
book_overkill
博客等级 码龄20年 1粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值