Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程
学习资料参考:
1、http://www.icoolxue.com/
2、
1、网络编程的基础概念。
TCP/IP协议;Socket编程;IP地址。
中国和美国之间,海底光缆是如何横跨太平洋的。“所谓的铺设,就是直接扔进海里,只不过再扔之前需要勘探光缆经过的地区的年水流数据,海域水深等情况,基本都是扔在水比较浅且水流平稳的地区。”目前,同样有卫星无线通信。
网络通信的协议约束;通信协议的分层思想(编程的时候,无需了解光缆,还是宽带);
在网络编程中,有两个问题:1.如何准确的定位网络上的一台或多台主机。2.如何在两个主机之间进行高效可靠的传输。
两个主机要互相通信:1.要知道双方的IP地址。2.要遵循一定的规则。(OSI和TCP/IP)事实上国际标准采用了:TCP/IP。事实上的标准,不是国际定义的标准,是在编程中实际运用的,在网络中跑的就是这一套规则。他们分了四层:网络接口层、IP层、传输层、应用层。
运输层,主要有:TCP/IP协议和UDP协议。TCP/IP协议:进程(两个应用程序)之间进行通信时,建立连接,通信,释放连接。UDP协议:进程之间不必先建立连接,也就不需要释放连接,故而减少了开销和时延。(QQ聊天需要少开销;游戏同步需要避免时延)
域名和IP地址。域名/IP地址:http://www.hp.com / 15.240.238.60.DNS负责将域名转换为IP地址。在java.net.*包中,有类InetAddress,它的.getHostName()和.getHostAddress()可以实现域名和IP地址的对应转换。
两个Java应用程序通过一个双向的通信链路连接,实现数据交换,这个双向链路的一端称为一个Socket。Socket通常用来实现Client-Server的连接。在Java.net.*;包中定义了两个类,Socket类和ServerSocket类,其分别用来实现双向连接的Client和Server端。建立连接时,所需的寻址信息为远程计算机的IP地址和端口号。我们这些是基于TCP的。
一台机器上最多有:65536个端口号。如果一个端口号代表一个应用程序的话,可以有65536个端口。1024是一个分界线;1~1023都是为系统保留的。如:http://www.google.com:80 代表了端口号80.TCP端口有65536个,UDP端口同样也有65536个,TCP的8080和UDP的8080是不一样的。我们上面说的都是Servlet端上的。。。Client上的端口是OS随机分配的。
我们日常QQ语音通讯中的杂音等问题,是由于UDP这个无连接协议来决定的。
2、InetAddress类代码练习。
import java.net.*;
public class TestNet {
public static void main(String args[]){
InetAddress address;
try {
address = InetAddress.getByName("www.hp.com");
System.out.println(address.toString());
System.out.println(address.getHostName());
System.out.println(address.getHostAddress());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如上,我们通过.getHostName()和.getHostAddress()方法,轻松的实现了域名和IP地址的映射。Java号称是Internet上的语言,它对很多网络中的东西做了封装好的类,提供了很多的便捷。
3、ServerSocket和 。
服务器端时刻不停的运行,等待着客户端的连接。所以服务器端的进程是阻塞似的。
4、同时在elcipse运行服务端程序和客户端程序。
参考地址:http://www.oseye.net/user/kevin/blog/280
Eclipse中多个console的使用:
在Eclipse中开了两个console,但是他们的操作总是同步的。不能搞在同一个项目中,Server端和Client端要在两个JavaProject中,要分开来的。
5、
Java基础复习笔记系列 九 网络编程的更多相关文章
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 三
前几节都是基础中的基础,从第三讲的笔记开始,每次笔记针对Java的一个知识块儿. Java异常处理 1.什么是异常? 异常是指运行期出的错误.比如说:除以一个0:数组越界:读取的文件不存在. 异常处 ...
- Java基础复习笔记系列 二
1.Java中Static的相关用法总结?(静态方法:静态变量:静态代码块) public static void main(String args[])执行的关键,在于有static.有了stati ...
- Java基础复习笔记系列 十三 反射机制
主题:Java反射机制 学习资料参考网址: 1.http://www.icoolxue.com 1.Java反射机制. 各种框架中都使用到了Java的反射机制. 两个类:java.lang.Class ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- Android(java)学习笔记77:网络编程的概述
计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 就 ...
随机推荐
- 01- Shell脚本学习--入门
简介 Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本. Unix/Linux上常见的Shell脚本解释器有bash.sh.csh.ksh等,习惯上把它们称作一种Shell.我们常说有多少 ...
- Android 实现应用升级方案(暨第三方自动升级服务无法使用后的解决方案)
第三方推送升级服务不再靠谱: 以前在做Android开发的时候,在应用升级方面都是使用的第三方推送升级服务,但是目前因为一些非技术性的问题,一些第三方厂商不再提供自动升级服务,比如友盟,那么当第三方推 ...
- wampserver中Apache启动不了的问题
今天晚上安装了wampserver,启动后,右下角的图表橙色,绿色才代表服务启动成功,到底是什么原因导致不能成功启动呢? 网上查资料,说可能是端口冲突,也可能是网络TCP/IP的设置有关系,我设置TC ...
- Unity内置的shader include files
Unity内置的shader include files:这些文件都以.cninc结尾, HLSLSupport.cginc:自动包含,一些跨平台编译相关的宏和定义. UnityShaderVaria ...
- IL指令速查
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...
- PHP的学习--图解PHP引用
在一篇文章中看到关于PHP引用的图解,对于加深对PHP引用的理解很有帮助,在这里备份一下. 如果你对PHP的引用一点也不了解,可以先看我之前的博客:PHP的学习--PHP的引用
- Apache+MySQL+PHP开发环境的搭建(一)
通过套件来安装和配置php开发环境. 1.所需软件:AppServ(因为是开源,任何网站都能下载) 安装本软件基本上就是下一步. 2.进行安装 选择一个盘安装该软件点击next继续: 根据自己的实际情 ...
- Spring MVC异常处理详解
Spring MVC中异常处理的类体系结构 下图中,我画出了Spring MVC中,跟异常处理相关的主要类和接口. 在Spring MVC中,所有用于处理在请求映射和请求处理过程中抛出的异常的类,都要 ...
- 写在MongoCola在Github上获得200个Star之后
MongoCola MongoCola是一个开源的MongoDB管理工具. 由于最初版本的设计失误,所以现在只能在Windows上使用,虽然可以在OSX上使用,但是非常别扭. 契机 MongoCola ...
- 简述ES5 ES6
很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...