网络编程
ip:主机在网络中的唯一标识,是一个逻辑地址。
127.0.0.1 表示本机地址。(没有网卡该地址仍然可以用)
端口:端口是一个软件抽象的概念。如果把Ip地址看作是一个电话号码的话,端口就相当于分机号。
进程一定要和一个端口建立绑定监听关系。端口号占两个字节。
协议:通讯双方为了完成预先制定好的功能而达成的约定。
Socket 是网络驱动层提供给应用程序编程的接口和一种机制。
可以把Socket比喻成是一个港口码头。应用程序只要把货物放到港口码头上,就算完成了货物的运送。应用程序只需等待无货到达码头后,将货物去走
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port;
getInputStream()方法 用于返回Socket的输入流对象;
getOutputStream()方法 用于返回Socket的输出流对象;
java中的网络编程类
位于java.net包中。
DatagramSocket类用于UDP通信。
ServerSocket类用于TCP通信的服务器端。
Socket类用于TCP通信的服务器和客户端。
TCP/IP网络七层模型:
物理层Physical(硬件)、 数据链路层DataLink(二进制) 、网络层Network(IP协议:寻址和路由)
传输层Transport(TCP协议,UDP协议) 、会话层Session(端口)
表示层Presentation、应用层Application(HTTP,FTP,TELET,SMTP,POPS,DNS)
TCP服务器程序必须先启动 运行,TCP客户程序才能连接上TCP服务器。
Socket 是网络驱动层提供给应用程序编程的接口和一种机制。
可以把Socket比喻成是一个港口码头。应用程序只要把货物放到港口码头上,就算完成了货物的运送。应用程序只需等待无货到达码头后,将货物去走
Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的IP和Port;
getInputStream()方法 用于返回Socket的输入流对象;
getOutputStream()方法 用于返回Socket的输出流对象;
基于TCP的Socket编程
服务器程序编写:
1,调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;
2,调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。
3,调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。
4,最后关闭通信套接字。
客户端程序编写:
1,调用Socket()创建一个流套接字,并连接到服务器端;
2,调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。
3,最后关闭通信套接字。
TCP服务器程序模型的编写要点:
TCP服务器程序要想能接收多个客户端连接,需要循环调用ServerSocket.accept方法。
服务器程序与每个客户端连接的会话过程不能互相影响,需要在独立的线程中运行。
一个线程服务对象与一个服务器端Socket对象相关联,共同来完成与一个客户端的会话。
为了有效解决TCP服务器程序端口号冲突的问题,TCP所使用同的端口号最好是通过一个配置参数来制定TCP服务程序所使用的端口号。
在TCP网络连接上传递对象
ObjectInputStream 和ObjectOutputStream可以从底层输入流中兑取对象类型的数据和将对象类型的数据写入到底层输出流。
使用ObjectInputStream 和ObjectOutputStream来包装底层网络字节流,TCP服务器和TCP客户端之间就可以传递对象类型的数据。
UDP网络程序
DatagranSocket类
send(DatagramPacket p)用于发送UDP数据包
receive(DatagramPacket p)用于接收UDP数据包
基于UDP的socket编程
接收端程序编写:
1,调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;
2,调用DatagramPacket(byte[] buf, int length),建立一个字节数组以接收UDP包 。
3,调用DatagramSocket类的receive(),接收UDP包。
4,最后关闭数据报套接字。
发送端程序编写:
1,调用DatagramSocket()创建一个数据报套接字;
2,调用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port),建立要发送的UDP包。
3,调用DatagramSocket类的send(),发送UDP包。
4,最后关闭数据报套接字
URL,通用资源定位符。
URL的基本组成:协议,主机名,端口号,资源名。
http://www.google.com:8080/index.html
http(协议) www.google.com(主机名) 8080(端口号) index.html(资源名)
http协议定义了Web浏览器与Web服务器之间交换数据的会话过程以及数据本身的格式。可以简单的理解为Http协议规定了浏览器从www服务器上获取网页的方式。
端口号 用来指定客户端程序要连接的网络服务器程序的监听端口号。