基本概念
一,主要协议:
1.OSI
物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
2.TCP/IP四层模型
二,DNS——域名系统
将IP地址映射至字符串
三,端口
协议 端口
Telent协议——23
简单邮件传输协议smtp——25
文件传输协议ftp——21
超文本传输协议——80
四,TCP传输控制协议
三次握手
网络通讯 url连接
public static void main(String[] args) throws Exception {
// 获得URL链接
URL url=new URL("https://www.baidu.com/");
// 打开链接
URLConnection conn=url.openConnection();
// 获得输入流
InputStream in=conn.getInputStream();
// 字节流转字符流
InputStreamReader reade=new InputStreamReader(in);
// 字符流转缓冲流
BufferedReader bu=new BufferedReader(reade);
/*
* 循环读取数据
*/
String st=null;
while((st=bu.readLine())!=null) {
System.out.println(st);
}
}
获得主机信息
public static void main(String[] args) throws Exception {
// 获得主机地址信息
InetAddress address=InetAddress.getLocalHost();
System.out.println(address);
// 获得主机名
String name=address.getHostName();
System.out.println("主机名: "+name);
// 获得本机IP地址
String add=address.getHostAddress();
System.out.println(add);
System.out.println("$$$$$$$$$$$$$$$$$$");
/*
* 通过主机名获得全部地址
*/
InetAddress[] addresses=InetAddress.getAllByName(name);
for (InetAddress inetAddress : addresses) {
System.out.println("IP:"+inetAddress.getHostAddress());
}
}
服务器客户端通讯——Socket
正常开发的数据走向:
客户端信息->服务器处理->客户端做出反馈
客户端
try {
// 建立客户端套接字
//要通讯的电脑的Ip地址 端口号(要和服务器的一致)
Socket socket=new Socket("127.0.0.1",8099);
System.out.println("客户端启动了:");
/*
* 开始通讯
*/
while(!socket.isClosed()) {//没有关闭
// 发送信息
ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());
// 获得键盘s输入
Scanner sc=new Scanner(System.in);
String s=sc.nextLine();
// 发送数据
out.writeObject("这是客户端信息:"+s);
// 接受信息
ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
String msg=in.readObject().toString();
System.out.println("客户端接受的信息:"+msg);
}
} catch (Exception e) {
}
服务器端
try {
/*
* 创建服务器套接字
*/
// port通讯端口(注意:客户端的端口号要和该端口一致)
ServerSocket serverSocket=new ServerSocket(8099);
System.out.println("服务器启动了:"+serverSocket);
// 监听客户端.一旦链接就创建一个Socket
Socket socket=serverSocket.accept();
System.out.println("有客户端链接:");
/*
* 开始通讯
* 注意:接受和发送是有顺序的
*/
while(!socket.isClosed()) {//是否关闭,(关闭
// 先接受
ObjectInputStream in=new ObjectInputStream(socket.getInputStream());
String msg=in.readObject().toString();
System.out.println("服务器接受信息:"+msg);
// 回应信息
//获得键盘输入
InputStreamReader reader=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(reader);
//从键盘读取数据
String line=br.readLine();
// 输出流
ObjectOutputStream out=new ObjectOutputStream(socket.getOutputStream());
out.writeObject(line);
}
} catch (Exception e) {
e.printStackTrace();
}