Java学习17 网络编程
2017-12-09 08:58
260 查看
网络基础
计算机网络
主要功能:1. 资源共享
2. 信息传输与集中处理
3. 均衡负荷与分布处理
4. 综合信息服务
网络分类:
1. 局域网,LAN,local area network
2. 城域网,MAN,metropolitan arem network
3. 广域网,WAN,wide area network
拓扑(Topology):
1. 环形网
2. 星形网
3. 总线型网
传输介质:
1. 双绞线网
2. 同轴电缆网
3. 光纤网
4. 卫星网
信号频带带宽:
1. 基带网(10k)
2. 宽带网
网络工作模式
1. 专用服务器结构(Server-Based),工作站/文件服务器
2. 客户机/服务器模式(Client/Server,C/S)
3. 对等式网络(Peer-to-Peer,P2P)
网络通讯协议
分层:由于节点之间联系复杂,在制定协议时,把复杂的成分分解成一些简单的成分,然后复合起来。最常用的复合方式是分层,即:同层间可以通信;上一层可调用下一层,但与再下一层不发生关系物理层
数据链路层
网络层
传输层
会话层
表示层
应用层
最高层:用户应用程序
最底层:物理通信线路
常用网络通信协议:
TCP/IP协议:TCP(Transmission Control Protocol,传输控制协议),IP(Internet Protocol,网际协议)
HTTP协议:HTTP(Hypertext Transfer Protocol,超文本传输协议)
FTP协议:FTP (File Transfer Protocol,文件传输协议)
SMTP协议:SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)
POP3/IMAP协议:POP3(Post Office Protocol - Version 3,邮局协议版本3),IMAP(Internet Message Access Protocol,Iternet消息访问协议)
IP地址/域名/端口
IP地址域名(Domain Address):由域名服务器(DNS, Domain Name Server)解析为对应IP地址
端口(Port):取值0~65535
相关API:
java.net.InetAddress
32位或128位无符号数字表示的IP地址
java.net.Inet4Address
InetAddress的子类,IPv4地址。
java.net.Inet6Address
InetAddress的子类,IPv6地址。
URL
Uniform Resource Locator,统一资源定位器。默认通讯端口:80
java.net包定义了URL类:
public URL(String spec); public final InputStream openStream() throws IOException;
openStream():打开到此URL的连接,并返回一个用于从该连接读入的InputStream
代理服务器:
设置系统参数:
http.proxyHost``http.proxyPort
java -Dhttp.proxyHost=192.168.1.1 -Dhttp.proxyPort=11080 URLReader
Socket编程
Socket:套件字,两个进程实现数据交换的一个双向网络通信连接链路的端点。Socket通常用来实现Client-Server连接。
寻址:机器名/IP地址 + 端口号
java.net包定义的两个类Socket和ServerSocket,分别用来实现双向连接的client和server端。(沿用流式IO模型)
ServerSocket:
调用accept()方法等待连接;若没有连接,服务端阻塞。连接后返回socket对象,可以打开连接到Socket的IO流,进行数据读写操作;通信结束后关闭打开的IO流和socket(调用close()方法);
Socket:连接server端进行IO读写操作,通信结束后关闭打开的IO流和socket。
NIO非阻塞式Socket通信
非阻塞式I/O避免read()/readLine()等IO操作的阻塞方法
主要涉及选择器Selector和通道Channel的使用
举例:多用户聊天室
相关文章推荐
- Java UDP 网络编程 示例 -Java学习笔记(30)
- Java学习笔记之网络编程基础-根据域名自动到DNS上获取IP地址
- [零散篇]Java学习笔记---Java的Socket网络编程以及多线程
- Java学习笔记之网络编程基础-通过URLConnection获取HTML页面
- Java网络编程从入门到精通(17):Socket类的getter和setter方法(1)
- Java学习笔记(七、网络编程基础)
- java网络编程 深入学习
- 黑马程序员-Java网络编程学习总结
- 开始学习java网络编程
- 18天Java学习---Java的Socket网络编程以及多线程
- Java学习---网络编程
- Java网络编程入门学习
- java网络编程学习(四)UDP/IP+BIO/NIO/多播
- 第一个java网络编程的学习
- java NIO非阻塞式IO网络编程学习笔记(一)
- java学习之 网络编程
- java网络编程学习笔记
- Java网络编程从入门到精通(17):Socket类的getter和setter方法(1)
- Java 网络编程 学习笔记一 基础知识
- 传智博客学习笔记15--JAVA网络编程