端口:物理连接。[0,65535]。[0,1023]为专用,普通用户使用的为1024以上。
套接字Socket连接应用程序与接口。
TCP程序
1、java.net.InetAddress类:与IP地址相关
抛出异常:UnknownHostException。
2、java.net.ServerSocket类:服务器套接字,等待网络请求与指定端口的套接字连接。一个服务器套接字一次只能连一个套接字。
多台客户机同时发出连接请求:serversocket将客户机存入队列,从中取一个连。队列默认大小50。若请求连接数>最大容纳数,多出的会被拒绝。
抛出异常均为IOException。
构造方法:
accept():返回与客户端Socket对象相连接的Socket对象。该方法会阻塞线程继续执行,直到接收客户呼叫。
若语句无客户呼叫,accept()未阻塞,则一般是程序使用了一个被其它程序占用的端口号,ServerSocket绑定失败。
服务器端对象通过getOutputStream()获得的输出流→客户端Socket对象通过getInputStream()获得的输入流。即:
服务器向输出流写入信息,客户端可通过相应的输入流读取。反之也是。
3、单向通信:客户机→服务器。
UDP
数据打包→数据包,发送接收。
receive()方法:没有数据时会阻塞直至有数据。否则是使用了其余程序占用的端口号。
1、java.net.DatagramPacket:数据包。
DatagramPacket(byte[] b,int length)
:内存空间、大小
DatagramPacket(byte[] b,int length,InetAddress address,int port)
:目标地址、端口
2、java.net.DatagramSocket:接发包的套接字。
DatagramSocket()
:套接字绑到主机任何可用的接口
DatagramSocket(int port)
:绑定到指定端口
DatagramSocket(int port,InetAddress address)
:绑定到指定本地地址。适用多网卡多IP
接收要有指定端口,发送可以随机。