一:本地回路的ip地址:127.0.0.1端口号的范围为0-65535之间,0-1023是用于一些知名的网络服务和应用。udp与TCPTCP(Transmission Connection Protocol)传输控制协议,是面向连接的通信协议。UDP(User Datagram Protocol),是无连接通信协议。SocketSocket是网络驱动层提供给应用程序编程的接口和一种机制。可以把Socket比喻成是一个港口码头。应用程序只要把货物放到码头,就算完成了货物的运送。应用程序只需等待货物到达码头后,将货物取走。Socket在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己所对应的ip和Port。Socket数据发送过程1应用程序产生Socket,2同时调用bind将Socket的信息通知给驱动程序,3应用程序将要发送的数据传给Socket,4驱动程序从Socket取出数据并通过网卡发送出去。Socket数据接收过程1应用程序产生Socket,2同时调用bind将Socket的信息通知给驱动程序,3驱动程序根据从网卡传送来的数据报中的指定目标端口号将处理后的数据传送到相应的Socket中,3应用程序从Socket中取数据。java中的网络编程类位于java.net包中。DatagramSocket类用于UDP通信。ServerSocket类用于TCP通信的服务器端。Socket类用于TCP通信的服务器和客户端。二:UDP网络程序DatagramSocket类DatagramPacket类InetAddress类
DatagramSocket类其构造函数有:public DatagramSocket()、public DatagramSocket(int port)、public DatagramSocket(int port,InetAddress ddr)send(DatagramPacket p)方法close方法DatagramPacket类DatagramPacket就如同码头的发送和接收数据的集装箱。其构造函数有:public DatagramPack(byte[] buf,int length)(用于创建接收数据的包)、public DatagramPack(byte[] buf,int length,InetAddress address,int port)(用于发送数据的包,必须要指定对方的地址和端口号)其有getInetAddress和getPort方法以及getData和getLength方法。InetAddress类InetAddress是表示ip地址的一个类,计算机地址如“192.168.0.1”、“www.itcast.cn”等其有把字符串ip地址转换的getByName方法。简单的UDP程序编程举例:import java.net.*;public class UdpSend{ DatagramSocket ds=new DatagramSocket();String strInfo="hello www.itcast.cn";ds.send(new DatagramPacket(strInfo.getByte(),strInfo.length(),InetAddress.getByName("192.168.0.3"),3000));ds.close();}}接收程序:import java.net.*;public class UdpRecv{ public static void main(String[] args){ DatagramSocket ds=new DatagramSocket(3000); byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf,1024); ds.receive(dp); String strInfo=new String(dp.getData(),0,dp.getLength())+"from"+dp.getAddress().getHostAddress()+":"+dp.getPort(); System.out.println(strInfo); ds.close();}}对于发送中文的时候,strInfo.length()应改为strInfo.getByte().length,因为strInfo.length()是字符串个数,而strInfo.getByte().length为字节个数
TCP网络程序工作原理:tcp客户端程序与服务器端程序交互过程:(1)服务器程序创建一个ServerSocket,然后调用accept方法等待客户来连接。(2)客户端程序创建一个Socket并请求与服务器建立连接。(3)服务器收到客户的连接请求,并创建一个新的Socket与该客户建立专线连接。(4)建立连接的两个Socket在一个单独的线程(由服务器程序创建)上对话。
简单的TCP服务器程序编程举例:import java.net.*;import java.io.*;public class TcpServer{public static void main(String[] args){ServerSocket ss=new ServerSocket(8001);Socket s=ss.accept();InputStream ips=s.getInputStream();OutputStream ops=s.getOutputStream();ops.write("welcome to www.itcast.cn".getByte());byte[] buf=new byte[1024];int len=ips.read(buf);System.out.println(new String(buf,0,len));ips.close();ops.close();s.close();ss.close();
}}
在TCP网络连接上传递对象ObjectInputStrea和ObjectOutputStream可以从底层输入流中读取对象类型的数据和将对象类型的数据写入高底层输出流中。使用ObjectInputStrea和ObjectOutputStream来包装底层网络字节流,TCP服务器和TCP客户端之间就可以传递对象类型的数据。
访问Internet网络资源URL(Uniform Resource Locator)基本组成:协议、主机名、端口号、资源名。例如http://www.itcast.cn:8080/index.html相对URL,例如"/a.html"URL编码规则:将空格转化为加号。对字母数字保持不变。对于所以其他字符则是用这个字符在内存中的十六进制表示,并在每个字节前加%,如字符“+”用%2B表示。中文字符在内存中占用两字节,字符“中”用%D6%D0表示。空格也可以用%20表示。
http协议的会话过程:基于http1.0协议客户机和服务器建立连接后,客户机向服务器发送请求,服务器接到请求后向客户机回送响应信息后关闭连接基于http1.1协议客户机和服务器建立连接后,客户机向服务器发送请求信息,服务器接到请求后向客户机回送响应信息,这个期间客户机可以发送n次请求同时服务器响应请求,客户机发出关闭连接才结束会话连接。
