网络编程简述
来源:互联网 发布:网络被运营商劫持举报 编辑:程序博客网 时间:2024/06/03 07:20
网络编程
TCP/IP模型有四层结构
应用层(Application Layer)为用户提供所需要的各种服务,负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议包含HTTP、FTP等
传输层(Transport Layer)为应用层实体提供端到端的通信功能,该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。其中,TCP协议提供的是一种可靠的、面向连接的数据传输服务;而UDP协议提供的是不可靠的、无连接的数据传输服务
网络层(Internet Layer)主要解决主机到主机的通信问题。该层有四个主要协议:网络协议(IP)、地址解析协议(ARP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。其中,IP协议是网络层最重要的协议
链路层(Link Layer)负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等
进行网络编程主要需要解决两个问题
1.如何在网络中找到一台或多台主机:
可以依靠网络层的IP解决,即提供主机的IP地址找到主机。
2.当通信双方成功连接后,如何进行可靠的数据传输:
针对传输层进行编程,传输层主要的两个协议是TCP和UDP
TCP(Tranfer Control Protocol)
面向连接的,可靠的传输协议
UDP(User Datagram Protocol)
无连接的,不可靠的传输协议
IP地址
网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这就是IP地址
端口
在一台物理性的计算机中,往往运行着多个网络程序,一个IP地址并不足以完整标识一个服务器,因此,端口是机器内部独一无二的场所
使用java.net包可以实现Java的网络功能,其中包含了一系列与网络通讯相关的类,比较重要的有:
InetAddress
Socket
ServerSocket
如果要进行网络通讯编程的话,必须导入此包
客户端
Socket(InetAddress address, int port);
Socket(InetAddress address, int port, boolean stream);
Socket(String host, int prot);
Socket(String host, int prot, boolean stream);
服务器端:
ServerSocket(int port);
获得输入输出流,Socket类中的方法
getInputStream,获得基于当前Socket的输入流
getOutputStream,获得基于当前Socket的输出流
Socket编程步骤
服务器端创建ServerSocket对象,调用accept方法返回Socket对象
客户端创建Socket对象,通过端口连接到服务器
客户端、服务器端都使用Socket中的getInputStream方法和getOutputStream方法获得输入流和输出流,进一步进行数据读写操作
概述
网络上的计算机通过IP地址来区分不同的机器;
端口是数据的通道,使得多个应用程序在同一主机上进行网络通信;
应用程序由一个IP地址和一个端口号唯一确定。
InetAddress用来描述主机地址;
Socket用来创建两台主机之间的连接;
ServerSocket用来侦听来自客户端的请求;
Socket通常称作“套接字”,通常通过“套接字”向网络发出请求或者应答网络请求
单一服务器对多客户端创建步骤
服务端:
1、创建套接字。
2、将套接字绑定到一个本地地址和端口上。
3、将套接字设为监听模式,准备接收客户请求。
4、等待客户请求到来;当请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字。启动线程为当前的连接服务。
5、返回,等待另一客户请求。
6、关闭套接字。
客户端:
1、创建套接字。
2、向服务器发出连接请求。
3、和服务器端进行通信。
4、关闭套接字。
单一服务器对多客户端
服务端:每次连接成功一个客户端,则启动一个线程为其服务
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10086);
System.out.println("服务器正常启动。。。");
while(true){
Socket socket = ss.accept();
System.out.println("用户接入成功。。。");
new ServerThread(socket).start();
}
}
}
- 网络编程简述
- unix网络编程之一简述
- 简述epoll并发网络编程方法
- linux网络编程 TCP/IP简述
- LINUX之网络编程j简述
- C#网络编程之TCP编程简述(6)
- C#网络编程之线程安全简述(4)
- 读书笔记-java网络编程-4Internet地址-地址简述
- 读书笔记-java网络编程-5URL和URI-简述
- 【网络编程笔记】Linux系统常见的网络编程I/O模型简述
- 网游网络层简述
- 网络协议简述
- 3G网络简述
- 网络基础简述
- ubuntu网络配置简述
- 简述网络协议
- 网络通信原理简述
- TWebBrowser 编程简述
- PHP简例
- javaee学习-基础(一)
- Linux下的mysql乱码问题
- 你想要的宏基因组-微生物组知识全在这
- android ANR源码分析 --- 之三
- 网络编程简述
- VisualSVN-Server与花生壳实现公网代码库-yellowcong
- jdbc资源的释放,增删改操作
- bzoj 4025: 二分图(可撤销并查集+CDQ分治)
- 按钮布局
- 第九周——项目一二叉树算法库
- xml小结
- Sum problem 求和问题
- 对Ajax的理解