java初级笔记_Socket

原创 2015年07月11日 02:11:46

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ------- 



     一、Socket相关概念

        A:计算机网络与网络编程

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

        B:网络模型

计算机网络之间以何种规则进行通信,就是网络模型研究问题。

网络模型一般是指

OSI(Open System Interconnection开放系统互连)参考模型

TCP/IP参考模型

两种主要的网络模型

        C:网络三要素

IP地址:网络中设备的标识,不易记忆,可用主机名。

端口号:用于标识进程的逻辑地址,不同进程的标识。

传输协议:通讯的规则,常见协议:TCP,UDP。

1、IP地址

要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,在TCP/IP协议中,这个标识号就是IP地址。

IP地址简介:

A:所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。按照TCP/IP规定,IP地址用 二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP 地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了 方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的 IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆 得多。


B:IP地址的组成
IP地址 = 网络号码+主机地址


A类IP地址:第一段号码为网络号码,剩下的三段号码为本地计算机的号码
B类IP地址:前二段号码为网络号码,剩下的二段号码为本地计算机的号码
C类IP地址:前三段号码为网络号码,剩下的一段号码为本地计算机的号码

特殊地址:
127.0.0.1 回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1   

DOS命令 ipconfig:查看本机IP地址
xxx.xxx.xxx.0 网络地址
xxx.xxx.xxx.255 广播地址

A类 1.0.0.1---127.255.255.254 (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在 局域网络中的地址) (2)127.X.X.X是保留地址,用做循环测试用的。
B类 128.0.0.1---191.255.255.254 172.16.0.0---172.31.255.255是私有地址。169.254.X.X是保留 地址。
C类 192.0.0.1---223.255.255.254 192.168.X.X是私有地址
D类 224.0.0.1---239.255.255.254
E类 240.0.0.1---247.255.255.254

2、端口号

物理端口 网卡口

逻辑端口 我们指的就是逻辑端口

每个网络程序都会至少有一个逻辑端口

用于标识进程的逻辑地址,不同进程的标识

有效端口:0~65535,其中0~1024系统使用或保留端口

通过360可以查看端口号

3、协议

UDP:

将数据源和目的封装到数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是 不可靠协议;不需要建立连接,速度快。

TCP:

建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协 议;必须建立连接,效率会稍低。

        D:Socket

在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket, 并绑定到一个端口上,不同的端口对应于不同的服务。

Socket就是为网络编程提供的一种机制,又叫套接字编程。

通信的两端都有Socket。

网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO传输。


     二、具体类介绍

A:InetAddress类

是对IP地址的抽象

无构造方法

主要方法

public static InetAddress getLocalHost() throws UnknownHostException  获取本地主机

public static InetAddress getByName(String host) throws UnknownHostException 依据主机名获取主机

public String getHostName()

public String getHostAddress()

B:UDP网络编程操作

DatagramSocket数据套接字与DatagramPacket数据包

完成步骤:

建立发送端,接收端。

创建数据

建立数据包。

调用Socket的发送接收方法。

关闭Socket。

发送端与接收端是两个独立的运行程序。

UDP发送端固定格式代码:

UDP接收端固定格式代码:

C:TCP网络编程操作

Socket客户端和ServerSocket服务器端

完成步骤:

建立客户端和服务器端。

建立连接后,通过Socket中的IO流(Socket流)进行数据的传输。

(如果是服务器端,则需要添加一步操作:通过Socket服务获取Sokect再获取其当中的IO流)

关闭socket。

同样,客户端与服务器端是两个独立的应用程序。

注意:

服务器端开启后等待客户端访问,不应关闭。

一个服务器端对应多个客户端。

不同客户端间通信可以通过服务器端中转信息。

TCP服务器端固定格式代码

TCP客户端固定格式代码

其他方法及注意事项:

客户端连接上服务端,两端都在等待,没有任何数据传输。

通过例程分析:因为read方法或者readLine方法是阻塞式。

解决办法:

自定义结束标记

使用shutdownInput,shutdownOutput方法。



------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

java基础面试题:java笔记题收集(一)

1、面向对象的特征有哪些方面?  - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。  - 继承:继...
  • chenpeng19910926
  • chenpeng19910926
  • 2016年08月02日 16:09
  • 666

黑马学习笔记--JAVA基础知识

JAVA概述JAVA发展史: JAVA之父:詹姆斯.高斯林 SUN公司:斯坦福大学网络公司(2010-10-24被oracle收购) JDK JRE JVM: JDK: JAVA开发工具包,包含了JR...
  • qq_28114645
  • qq_28114645
  • 2017年03月07日 22:33
  • 371

【马士兵】笔记_Java网络编程

有道云笔记 连接: http://note.youdao.com/noteshare?id=73a73d444af9b9165649e572f9f1feb4 -------------...
  • na_simon2900086
  • na_simon2900086
  • 2016年11月15日 05:39
  • 471

Android学习笔记-Android初级 (一)

1.Activity屏幕方向与显示方式与屏幕旋转 //代码设置横竖屏,也可以在menifest中设置 //setRequestedOrientation(ActivityInfo.SCREE...
  • zx_android
  • zx_android
  • 2016年02月02日 14:34
  • 782

Java Socket应用---慕课网笔记

第一章 网络基础知识1-1 网络基础简介Java最初是作为网络编程语言出现的,其对网络提供了高度的支持 而在网络编程中使用最多的就是Socket,像QQ,MSN都使用了Socket 相关的技术Ja...
  • helloPurple
  • helloPurple
  • 2017年08月04日 02:01
  • 328

JAVA入门基础知识小结

从C++到Java入门基础知识小结...
  • CSDN_SXL
  • CSDN_SXL
  • 2016年01月26日 15:02
  • 7498

Java初级工程师面试题精选1

1.Java中的作用域public,private,protected,以及不写作用域(default)时有什么区别?   Java中有四种作用域,按照作用域范围由大到小排列一次是:public ,...
  • u012050416
  • u012050416
  • 2016年03月17日 12:16
  • 6099

赖世雄入门级美式美语学习笔记(Lesson 1)

Hi, my name is Jenifer. Lesson 1 Greetings Dont forget to say greetings to uncle Wang. Dialogue ATom...
  • dudongxiao
  • dudongxiao
  • 2010年01月09日 10:58
  • 1491

《时间管理》课程笔记(一)

1. 为什么要时间管理    曾经有过这样一个报道:有一名记者随机采访了几个人,问了这样一个问题:     你认为你的时间是由自己来掌控的吗?得到的回答却是这样的:     如今各种竞争如此激烈,...
  • dmcpxy
  • dmcpxy
  • 2012年08月08日 11:21
  • 1957

初级Java开发工程师应当掌握哪些知识点(Java开发面试经验)

初级Java工程师面试准备 1、适合人群:应届计算机毕业生和Java初学者 2、知识储备,掌握以下知识或相关知识即可面试这一岗位 ·Java基本语法知识 ·Java面向对象知识 ·JSP与基本前端知识...
  • u013428259
  • u013428259
  • 2016年05月18日 15:16
  • 5024
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java初级笔记_Socket
举报原因:
原因补充:

(最多只允许输入30个字)