【java学习之路】(java SE篇)012.网络编程
网络编程
网络的概念
网络:一组相互连接的计算机
- 由多台计算机组成
- 使用物理线路进行连接
网络编程三要素
IP地址:唯一标识网络上的每一台计算机,两台计算机之间通信的必备要素
端口号:计算机中应用的标号(代表一个应用程序),0-1024系统使用或保留端口 ,有效端口0-65536
通信协议:通信的规则 TCP,UDP
网络模型
网络模型一
OSI参考模式:开放系统互连参考模型(Open System Interconnect)
网络模型二
TCP/IP参考模型:传输控制/网际协议 Transfer Controln Protocol/Internet Protocol
IP地址的表示方式
▪ IP 地址:32位,由4个8位二进制数组成
▪ IP表示方法:点分十进制
▪ IP地址 = 网络ID +主机ID
– 网络ID:标识计算机或网络设备所在的网段
– 主机ID:标识特定主机或网络设备
IP地址的分类
▪ 地址类用于指定网络 ID 并在网络 ID 和主机 ID 之间提供分隔方法
▪ IP 地址类包括:
– A 类:1-126 (0 段和 127 段不使用 )
– B 类:128-191
– C 类:192-223
– D 类:224-239
– E 类:240-255
特殊的IP地址
▪ 0.0.0.0:本机
▪ 127.0.0.1:本机回环地址,用于本机测试
▪ 255.255.255.255:当前子网,一般用于向当前子网广播信息
IP地址所对应的对象->InetAddress
import java.net.InetAddress;
import java.net.UnknownHostException;public class InetAddressDemo {public static void main(String[] args) {try {InetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost);InetAddress byName = InetAddress.getByName("www.baidu.com");System.out.println(byName);System.out.println(byName.getHostAddress());System.out.println(byName.getHostName());} catch (UnknownHostException e) {e.printStackTrace();}}
}
端口
端口是虚拟的概念,并不是说在主机上真的有若干个端口。通过端口,可以在一个主机上运行多个网络应用程序。
传输协议
UDP:相当于収短信(有字数限制),不需要建立连接,数据报的大小限制在64k内,效率较高,不安全,容易丢包
TCP:相当于打电话,需要建立连接,效率相对比较低,数据传输安全,三次握手完成。(点名->答到->确认)
Socket套接字
▪ 网络上的两个程序通过一个双向的通信连接实现数据的交换
▪ 这个连接的一端称为一个socket。
▪ Java中使用Socket完成TCP程序的开収,使用此类可以方便的建立可靠的、双向的、持续性的、点对点的通讯连接
▪ 在Socket的程序开収中,服务器端使用ServerSocket等待客户端的连接,
▪ 对于java的网络程序来讲,每一个客户端都使用一个Socket对象表示
基于TCP协议的Socket编程
进行网络通信时,Socket需要借助数据流来完成数据的传递工作
package client;import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;/*** 客户端向服务端发送数据*/
public class Client {public static void main(String[] args) throws IOException {//创建Socket对象,实际上是开启现实io的虚拟接口(此接口不是java中的接口,而是类似于网线的插槽)//需要指定数据接收方的IP地址和端口号Socket client = new Socket("localhost",10086);//获取输出流对象,向服务端发送数据OutputStream outputStream = client.getOutputStream();//将输出流对象进行包装DataOutputStream dataOutputStream = new DataOutputStream(outputStream);//传输数据dataOutputStream.writeUTF("Hello,你好");//关闭流dataOutputStream.close();outputStream.close();client.close();}
}
package server;import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;/****/
public class server {public static void main(String[] args) throws IOException {//服务端需要使用serverSocket来开放本地端口ServerSocket serverSocket = new ServerSocket(10086);//需要接受client传输过来的数据,需要定义socket对象Socket server = serverSocket.accept();//通过server获取输入流对象InputStream inputStream = server.getInputStream();//对输入流做包装DataInputStream dataInputStream = new DataInputStream(inputStream);//读取相应的数据String str = dataInputStream.readUTF();//关闭所有的流操作dataInputStream.close();inputStream.close();server.close();serverSocket.close();}
}
基于TCP协议的Socket编程
【java学习之路】(java SE篇)012.网络编程相关推荐
- 个人开发经历--我的java学习之路(学校篇)
个人开发经历--我的java学习之路(学校篇) 个人介绍: 姓名: 不在这里说明 联系信息: 个人历程 jdbc阶段 sql生成器 一代代码生成器 servlet阶段 servlet项目中,sql生成 ...
- java学习之路---java学习的方法和java学习路线
转载于: http://blog.csdn.net/zhangerqing 前段时间逛论坛,总会有很多新手很迷茫,问到:到底该怎么学好Java,这个问题很重要,尤其对于像我们这样大多数都是靠自学的人来 ...
- Java学习之路-----Java基础简介,基础语法,Java标识符,修饰符,关键字与注释
这里写目录标题 Java简介 Java发展历程 Java语言平台版本 Java语言的特点 Java语言跨平台原理--JVM JRE和JDK JDK安装路径下的目录解释 Java基础语法 Java标识符 ...
- Java学习之路 -- Java怎么学?
文章目录 java基础怎么学? 学完基础学什么? 几个常用框架学完学什么? MQ JVM的知识跑不掉 微服务等等 其他 数据结构和算法 java基础怎么学? 当时,作为懵懂的小白,大一学习了c和c++ ...
- java学习日记(9)———socket,网络编程的学习
---------------------- android培训.java培训.期待与您交流! ---------------------- ----------- 自己学习编程的时候当时还用了不少时 ...
- JAVA学习之路--基础篇三
目录 关于Java中从键盘输入的语句 nextxxx().next().nextLine()的区别 语句 if和if else语句 Switch语句 for语句 while和do..while bre ...
- java学习之路目录(已完结)
java学习之路目录(持续更新中-) 第一阶段 javaSE(完结) 序号 标题 内容 001 java初识 java语言特点.体系结构.运行机制 002 java SE基础语法 注释.关键字.变量. ...
- 我的Java学习之路2009-11-17
-------------------------------2009年3月19日开始----------------------------- 下载JDK Myeclipse Netbeans JB ...
- 菜鸟haqima的Java学习之路第一天
菜鸟haqima的Java学习之路第一天 导读:DOS命令 常用快捷键 Java的简单概述 (第一章 Java开发环境的搭建) 1.常用的DOS命令 1.1.怎么打开DOS命令窗口 win键+r(组合 ...
- Java学习之路02_选择方向_旺旺老师
提示:请您先阅读第一部分:Java学习之路01_软件江湖_旺旺老师 第二部分:帮派之争 就好像玩游戏要先选择角色种族,进入江湖要先选择帮派,那搞软件开发也要选择方向.个人总结的软件开发的方向:嵌入式开 ...
最新文章
- 实战并发编程 - 09多线程Guarded Suspension模式案例实战
- 为什么`malloc`出来的内存也能当成对象正常使用
- python横坐标如何显示为月份_如何显示给定两个日期之间的所有月份?
- ios中静态库的创建和使用、制作通用静态库(Cocoa Touch Static Library)
- 设计模式示例_命令设计模式示例
- python文件系统_你应该知道的10个Python文件系统方法
- js组装知识(待续……)
- 使用 jQuery Mobile 与 HTML5 开发 Web App (四) —— jQuery Mobile 表单上
- WSL:适用于 Linux 的 Windows 子系统
- 实验四+074+林盼皇
- 智能优化算法:鸡群优化算法-附代码
- 平面判断两点连线是否交叉
- java jxta_java现在还支不支持jxta,怎么官方都没下载了?
- 定义方法-求矩形的面积
- uniapp 图片上传
- 电脑的wifi天线原理_无线网络 WIFI天线原理 (DIY天线知识学习)上文
- 新浪公司总裁兼首席执行官 曹国伟
- css设置全局内边距为0,重置CSS - 将填充和边距设置为0?
- VUE_v-lazy懒加载
- 关于零输入响应和零状态响应的想法
热门文章
- Qt窗口部件——QFrame/QAbstractButton/QLineEdit/QAbstractSpinBox/QAbstractSlider
- Java SQL 注入学习笔记
- django搭建一个小型的服务器运维网站-查看和修改服务器配置与数据库的路由...
- Leetcode学习成长记:天池leetcode基础训练营Task02链表
- (转)Docker 基础 : Dockerfile
- 数字后端基本概念介绍<Blockage Link>
- java mediator模式_Java实现中介者模式-Mediator Pattern
- matlabpython建模_参加数学建模用 MATLAB,还是 Python?
- linux 脚本 列表,shell -脚本 给出多个数据列表 执行任务
- 怎样使用OUTLOOK收发邮件 小雨