首页 > 代码库 > 网络编程
网络编程
TCP/IP协议概述
TCP/IP模型有四层结构
应用层(Application Layer)
传输层(Transport Layer)
网络层(Internet Layer)
链路层(Link Layer)
应用层为用户提供所需要的各种服务,负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议包含HTTP、FTP等。
传输层为应用层实体提供端到端的通信功能,该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP)。其中,TCP协议提供的是一种可靠的、面向连接的数据传输服务;而UDP协议提供的是不可靠的、无连接的数据传输服务
网络层主要解决主机到主机的通信问题。该层有四个主要协议:网络协议(IP)、地址解析协议(ARP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。其中,IP协议是网络层最重要的协议。
链路层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等。
TCP(Tranfer Control Protocol)
面向连接的,可靠的传输协议
UDP(User Datagram Protocol)
无连接的,不可靠的传输协议
IP地址
网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这就是IP地址;
IP地址由4个字节共32位二进制数组成,类似于:192.168.0.8;
在网络寻找某一台计算机都是依靠它的IP地址(用域名或计算机名定位主机其实也是通过某种服务转成IP地址后再找到该主机)
许多网络地址被保留用于特殊用途;
0.0.0.0和127.0.0.1就是两个此类地址,第一个称为缺省路由,后一个是环回地址;
127.0.0.1被保留用于用户主机的本地IP话务,它被分配给一个特殊接口,即起到闭合电路作用的环回接口。
端口
在一台物理性的计算机中,往往运行着多个网络程序,一个IP地址并不足以完整标识一个服务器,因此,端口是机器内部独一无二的场所;
客户端
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的输出流
服务器端创建ServerSocket对象,调用accept方法返回Socket对象
客户端创建Socket对象,通过端口连接到服务器
客户端、服务器端都使用Socket中的getInputStream方法和getOutputStream方法获得输入流和输出流,进一步进行数据读写操作
网络上的计算机通过IP地址来区分不同的机器;端口是数据的通道,使得多个应用程序在同一主机上进行网络通信;应用程序由一个IP地址和一个端口号唯一确定。
InetAddress用来描述主机地址;
Socket用来创建两台主机之间的连接;
ServerSocket用来侦听来自客户端的请求;
Socket通常称作“套接字”,通常通过“套接字”向网络发出请求或者应答网络请求。
单一服务器对多客户端
服务端:每次连接成功一个客户端,则启动一个线程为其服务
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();
}
}
}
网络编程