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:网络编程的概述
计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 就 ...
随机推荐
- Mybatis文档阅读笔记(明日继续更新...)
今天在编写mybatis的mapper.xml时,发现对sql的配置还不是很熟,有很多一坨一坨的东西,其实是可以抽取成服用的.不过良好的组织代码,还是更重要的.
- MyBatis 环境搭建 (一)
一.MyBatis简介 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简 ...
- 使用动态类型dynamic让你的省了很多临时类
客户端与服务端的数据交互使用的数据格式是json格式,为了使客户端与服务端有类对应关系,进行序列化,所以总要定义一些类,使用动态类型dynamic可以不必要定义那么多类. 测试代码: using Sy ...
- Android 神兵利器—— Adb 常用命令
总结的Android工具类文章: Android 神兵利器-- Adb 常用命令 Android 神兵利器-- Git 常用命令 Adb的全称为Android Debug Bridge,是管理andr ...
- 动手搭个wordpress
看到很多人都是自己搭建博客服务器,然后一切都在自己的掌控之下,这样就不存在什么迁移,数据安全之类的问题,当然需要自己搞个空间了,不过现在都便宜的不行,$15/year,也是醉了.我不怎么写博客,但是个 ...
- Java 多态——与C++的比较
学习了Java和C++之后,由于长期不使用C++,而java的基础知识掌握不牢,现在已经搞不清java多态了.现在先来谈谈java多态,稍后有时间再更新C++的多态,并进行比较~ 一. Java的多态 ...
- [转]Java并发编程:Lock
链接: http://www.cnblogs.com/dolphin0520/p/3923167.html
- VMware虚拟机Mac OS X无法调整扩展硬盘大小,更新xcode时出现磁盘空间不足
使用VMware虚拟机搭建的MacOSX,安装xcode时出现磁盘空间不足的错误. 因为很多朋友在初次安装MacOSX的时候都默认选择40G的磁盘大小,结果用了没两天之后就发现磁盘不够用了. 这时,百 ...
- python导入模块和包的使用
做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...
- Bmob基础
BaaS是指专为移动应用开发者提供整合云后端的服务.开发者无需过多研究服务器端程序,而只需调用云计算平台提供的API,使用相应SDK,就能迅速完成数据存储.账户管理.消息推送.社交网络整合等功能.本文 ...