网络编程简述

来源:互联网 发布:网络被运营商劫持举报 编辑:程序博客网 时间: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();

     }

              }

        }

 

原创粉丝点击