ip地址:网络地址+主机地址
域名:ip地址的映射,便于记忆
—— 例如:www.baidu,com
端口号:用于标识计算机网络上的某个特定程序
InetAddress类
可通过域名/主机名获取InetAddress对象
InetAddress host = InetAddress.getLocalHost();
System.out.println("本地主机的inetAddress对象为" + host);
//主机名+ip地址
InetAddress host1 = InetAddress.getByName("PC-20191025ZWMM");
System.out.println("该主机名对应的inetAddress对象为" + host1);
InetAddress host2 = InetAddress.getByName("www.hao12345.com");
System.out.println("该域名对应的inetAddress对象为" + host2);
System.out.println("该对象对应的主机名/域名为" + host2.getHostName());
System.out.println("该对象对应的ip地址为" + host2.getHostAddress());
TCP——传输控制协议
可靠的,可进行大数据量传播,效率低
socket类
socket套接字
通信两端都要有socket,是两台机器间通信的端点
socket允许程序吧网络连接当作一个流,数据在两个socket之间通过io传输
主动发起通信的为客户端,等待通信请求的为服务端
读写数据的方法
socket,getOutputStream();
socket.getInputStream();
- 字节流传输
服务端
//在本机的9999端口监听
ServerSocket serverSocket = new ServerSocket(9998);
//serversocket通过accept返回socket
Socket socket = serverSocket.accept();
//读取客户端传来的数据
//若没有客户端连接的话,程序就会阻塞
InputStream inputStream = socket.getInputStream();
//IO读取
byte buf[] = new byte[1024];
int len = 0;
while((len = inputStream.read(buf)) != -1){
System.out.println(new String(buf,0,len));
}
//开始写入
//直接写入
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello,client".getBytes());
socket.shutdownOutput();//写入结束后一定做标记
//关闭流和socket
inputStream.close();
outputStream.close();
socket.close();
serverSocket.close();