1.惟一的ip地址java
2.协议服务器
3.端口号网络
为实现网络中不用计算机之间的通讯,每台计算机都必须有一个惟一的一个标识---IP地址多线程
IP地址格式:数字型,如:192.168.0.1(32位的二进制)socket
IPV4:是互联网协议(Internet Protocol,IP)的第四版,也是第一个被普遍使用,构成现今互联网技术的基础的协议。1981年 Jon Postel 在RFC791中定义了IP,Ipv4能够运行在各类各样的底层网络上,好比端对端的串行数据链路(PPP协议和SLIP协议) ,卫星链路等等。局域网中最经常使用的是以太网。this
TCP/IP是目前世界上应用最为普遍的协议.net
是以TCP和IP为基础的不一样层析上多个协议的集合线程
也称为;TCP/IP协议族或TCP/IP协议栈code
TCP:TransmissionControl Protocol 传输控制协议orm
IP:Internet Protocol 互联网协议
1.用于区分不一样应用程序
2.端口号范围为0-65535,其中0-1023为系统所保留
3.IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通讯链路的终结点,是TCP和UDP的基础
InetAddress类
1.InetAddress类用于标示网络上的硬件资源,表示互联网协议(IP)地址 获取本机的InetAddress实例
InetAddress address=InetAddress.getLocalHost();
System.out.println("计算机名:"+address.getHostName());
InerAddress实例获取:
一、经过主机名和ip地址来获取 。 InetAddress.getByName("机器名"); InetAddress.getByAddress(ip地址); 二、也可经过getLocalHost()方法来获取实例。
1.URL(Uniform Resource Locator)统一资源定位符,表示Internet上某一资源的地址
2.URL由两部分组成:协议名称和资源名称,中间用冒号隔开
3.在java.net包中,提供了URL类来表示URL
锚点:是指同一页面中的不一样位置连接。例如,一个很长的页面,在页面的最下方有一个“返回页首”的文字,单击连接后,能够跳转到这个页面最顶端,这就是一种最典型的锚点连接。经过点击命名锚点,可以快速重定向网页特定的位置(好比快速到页首、页尾或者网页中某篇文章处),便于浏览者查看网页内容。相似于咱们阅读书籍时的目录页码或章回提示。
1.经过URL对象的openStream()方法能够获得指定资源的输入流
2.经过输入流能够读取、访问网络上的数据
Socket通讯 1.TCP协议是面向对象链接、可靠的、有序的,以字节流的方式发送数据
2.基于TCP协议实现网络通讯的类
客户端的Socket类
Socket通讯实现步骤
1.建立ServerSocket和Socket
2.打开链接到Socket的输入/输出流
3.按照协议对Socket进行读/写操做
4.关闭输入输出流、关闭Socket
客户端步骤:
1.建立客户端Socket,指定服务器地址和端口 Socket socket=new Socket("IP地址","端口号"); 2.获取输出流,向服务器发送信息 OutputStream os=socket.getOutputStream();//字节输出流 PrintWriter pw=new PrintWriter(os);//将输出流包装为打印流 pw.write("用户名:admin;密码:123"); pw.flush(); socket.shutdownOutput();//关闭输出流 //关闭相应的资源 pw.close(); os.close(); socket.close();
基本步骤 1.服务器端建立ServerSocket,循环调用accept()等待客户端链接 2.客户端建立一个socket并请求和服务器端链接 3.服务器端接收客户端请求,建立socket与该客户创建专线链接 4.创建链接的两个socket在一个单独的线程上对话 5.服务器端继续等待新的链接
服务器线程处理类
public class ServerThread extends Thread { //和本线程相关的socket Socket socket=null; public ServerThread(Socket socket) { this.socket=socket; } //线程执行的操做,响应客户端的请求 public void run() { //获取输入流,并读取客户端信息 //获取输出流,反馈信息给客户端 } }
服务器的修改
Socket socket=null; //记录客户端的数量 int count=0; //循环监听等待 while(true) { //调用accept()方法开始监听,等待客户端的链接 socket=serverSocket.accept(); //建立一个新的线程 ServerThread serverThread=new ServerThread(socket); //启动线程 serverThread.start(); count++; System.out.println(count); //获取当前客户端的IP InetAddress address=socket.getInetAddress(); System.out.println("当前客户端的IP:"+address.getHostAddress()); }