[未完成]关于Java网络编程总结
网络的七层结构:
第一层:物理层,网线。
第二层: 数据链路层,交换机。交换机有IP地址。这一层的数据叫做帧
第三层:网络层,数据包方向的定义,路由器。现在也有具有路由功能的交换机。主要将从下层接收到的数据进行IP地址的封装与解封装。
第四层:传输层,定义了一些传输数据的协议和端口号。TCP,UDP。
第五层:会话层,
第六层:表示层。主要就是进行对接收的数据惊醒解释,加密与解密。压缩与解压缩。
第七层:应用层。主要是一些终端的应用,比如FTP,各种文件的下载。WEB 浏览器等。


传输层和网际层还是比较独立的。java网络编程中的主要就是传输层和网际层。
javaWeb主要是应用层。平常电脑使用使用的主要是主机至网络层。
访问本机用。 本地回环地址:127.0.0.1 主机名:localhost
物理端口,逻辑端口。用于标识进程的逻辑地址。不同进程的标识。有效端口:0~65535,其中0~1024系统使用或保留端口。
在防火墙中可以设置某个端口的程序,则这个程序无法上网。
传输协议:通讯的规则。常见协议:TCP,UDP。
UDP:
将数据以及源和目的封装成数据包中,不需要建立连接。
每个数据包的大小在限制在64K内。
因无连接,是不可靠协议。
不需要建立连接,速度快。
QQ和飞秋,视频通话都是UDP。
TCP
建立连接,形成传输数据的通道。
在连接中进行打数据量传输。
通过三次握手完成连接,是可靠协议。
必须建立连接,效率会稍低。
打电话是TCP。下载数据就是。只要一掉线就无法下载。
类 InetAddress
此类表示互联网协议 (IP) 地址。
IP 地址是 IP 使用的 32 位或 128 位无符号数字,它是一种低级协议,UDP 和 TCP 协议都是在它的基础上构建的。
该类没有构造函数。
这就说明不能直接new。
但是还有非静态的一般方法,
且返回其对象并且是静态方法。
获取新浪,网易这些网站的IP地址不唯一,因为他们会用到服务器集群的这种情况。
百度是可以用一个固定的IP地址进行解析的。
C:\Windows\System32\drivers\etc\hosts
这个hosts文件是本地DNS列表。
hosts文件中就有 127.0.0.1 对应着是localhost
首先进行本地的DNS列表的访问,再访问外部DNS服务器进行解析。
如果经常遇到有弹窗的游戏广告的网站的时候,把该网站的网址写在本地DNS解析列表文件中。这样遇到该网站的时候首先进行本地DNS解析列表的检查,在本地注册了就不会走外部的DNS服务器。
Socket 就是为网络服务提供的一种机制。
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
所以网络编程又叫做Socket编程。
类 DatagramSocket
此类表示用来发送和接收数据报包的套接字。
类 DatagramPacket
此类表示数据报包。
数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。
IPDemo .java
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IPDemo {
public static void main(String[] args) throws UnknownHostException {
//获取本地主机ip地址对象。
InetAddress ip = InetAddress.getLocalHost();
//获取其他主机的ip地址对象。
ip = InetAddress.getByName("192.168.1.110");
//InetAddress.getByName("kongxiaohan-PC");
System.out.println(ip.getHostAddress());
System.out.println(ip.getHostName());
}
}
UDPSendDemo .java
public class UDPSendDemo {
public static void main(String[] args) throws IOException {
System.out.println("发送端启动......");
/*
* 创建UDP传输的发送端。
* 思路:
* 1,建立udp的socket服务。
* 2,将要发送的数据封装到数据包中。
* 3,通过udp的socket服务将数据包发送出去。
* 4,关闭socket服务。
*/
//1,udpsocket服务。使用DatagramSocket对象。
DatagramSocket ds = new DatagramSocket(8888);
//2,将要发送的数据封装到数据包中。
String str = "udp传输演示:哥们来了!";
//使用DatagramPacket将数据封装到的该对象包中。
byte[] buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("1.1.1.1"),10000);
//3,通过udp的socket服务将数据包发送出去。使用send方法。
ds.send(dp);
//4,关闭资源。
ds.close();
}
}
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为
length 的包发送到指定主机上的指定端口号。
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。
参数:
buf - 包数据。
length - 包长度。
address - 目的地址。
port - 目的端口号。
[未完成]关于Java网络编程总结的更多相关文章
- 20145205 《Java程序设计》实验报告五:Java网络编程及安全
20145205 <Java程序设计>实验报告五:Java网络编程及安全 实验要求 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.客户端中输入明文,利用DES算法加密,D ...
- Java 网络编程学习总结
新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1] 网络编程认识 [2] TCP/IP编程 ...
- 20145212 实验五《Java网络编程》
20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...
- 20145213《Java程序设计》实验五Java网络编程及安全
20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器 ...
- 20145206《Java程序设计》实验五Java网络编程及安全
20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和201451 ...
- 20145337实验五Java网络编程及安全
20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...
- java 网络编程复习(转)
好久没有看过Java网络编程了,现在刚好公司有机会接触,顺便的拾起以前的东西 参照原博客:http://www.cnblogs.com/linzheng/archive/2011/01/23/1942 ...
- JAVA课程实验报告 实验五 Java网络编程及安全
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225《Java程序设计》 实验五 Java网络编程及安全
20145225<Java程序设计> 实验五 Java网络编程及安全 实验报告 一.实验内容 基于Java Socket实现安全传输. 基于TCP实现客户端和服务器,结对编程一人负责客户端 ...
随机推荐
- UVALive 7461 Separating Pebbles (计算几何)
Separating Pebbles 题目链接: http://acm.hust.edu.cn/vjudge/contest/127401#problem/H Description http://7 ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- codeforces 630 I(规律&&组合)
I - Parking Lot Time Limit:500MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- mahout算法源码分析之Itembased Collaborative Filtering(二)RowSimilarityJob
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 本篇开始之前先来验证前篇blog的分析结果,编写下面的测试文件来进行对上篇三个job的输出进行读取: p ...
- 集合引入(ArrayList、LinkedList)
1.引入 代替数组固定大小操作不变 2.ArrayList 常用的操作(add,remove) 3.LinkedList 能实现一些特殊的操作(pop)
- VirtualBox虚拟磁盘扩容
1. cmd中运行 VBoxManage modifyhd D:\我的资料库\Documents\VirtualBox VMs\ubuntu\ubuntu.vdi --resize 提示错误 Syn ...
- 插入三层treeview代码
#region treetView加载 private void treeViewLoad() { DataView dv = navds.tbSiteKind.AsDataView(); treeV ...
- Mysql中关于 group_concat函数详解
group_concat()主要功能:能将相同的行组合起来 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Sepa ...
- JS Math 类库介绍
下面介绍下随机生成数的常用几个API JS 随机数生成 : 在JavaScript , 提供了生成随机数的API, Math.random() 1.Math.random() : 随机生成小数 . 生 ...
- android ipc通信机制之之三,进程通讯方式。
IPC通讯方式的优缺点: IPC通讯方式的对比 名称 优点 缺点 适用场景 Bundle 简单易用 只能传输Bundle支持的数据类型 四大组件的进程通信 文件共享 简单易用 不适合高并发场景,并无法 ...