OSI模型
主机A
1应用层2表示层3会话层4传输层5网络层6数据链路层7物理层
应用层1-3,传输层4,网络互联层5,网络接口层6-7,
端口
telnet协议 tel 23端口 | 简单邮件传输协议 smtp 25 | 文件传输协议 21 | 超文本传输协议 80
IntAddress类
getLocalHost() 获取本机InetAddress对象
getHostAddress() 获取IP地址对象
getLocalName 获取本地域名对象
TCP编程对象
需要向系统注册服务 , 监听链接 ,获取输入输出流 , 处理数据, 关闭资源
代码:
//需要向操作系统注册,服务=>指定端口
ss = new ServerSocket(port);
//监听客户端的连接,阻塞直到有客户端连接
accept = ss.accept();
//获取客户端的信息
InetAddress inetAddress = accept.getInetAddress();
String clientAddress = inetAdress.getHostAdress;
//通过输入流来进行服务器和客户端的交互 || InputStream inputStream = accept.getInputStream();
//输入流
dataInputStream = new DateInputStream(accept.getInputStream);
dataOutputStream = new DateInputStream(accept.getOutputStream);
//先返回服务端的欢迎信息
String welcome = scanner.nextLint();
dataOutputStream.writeUTF(welcome);
//处理处理
客户端
创建socket套接字,获取输入流和输出流,处理数据 , 关闭资源
Socket socket = null;
DataOutputStream dataOutputStream = null;
DataInputStream dataInputStream = null;
Scanner scanner = new Scanner(System.in);
try{
//创建socket对象
socket = new Socket(ipAddress , port);
//获取输出流,获取输入流
dataOutputStream = new DataOutputStream(socket.getOutputStream);
dataInputStream = new DataInputStream(socket.getinputStream);
//先收取服务器的输入信息
System.out.println("服务器端"+dataInputStream.readUTF());
//输出数据
String content = scanner.nextLine();
dataOutputStream.writeUTF(content);
System.out.println("服务器端"+dataInputStream.readUTF());
}catch{
e.printStrackTrace();
}finally{
}
}
UDP: 不安全 不可靠 单向 广播式
URL:
统一资源定位符,包含协议,主机名字,端口,文件路径
https://list.jd.com/list.html?cat=9987,653,655
URL这个类主要用于获取 对应 资源定位指定符
openStream(): 得到对应内容的字节输入流
//创建一个URL对象
URL url = new URL("http://www.gxadu.com");
//获取对应网址的内容字节流
InputStream inputStream = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String read= null;
String myContent="";
while((read = br.readLine()) ! = null){
myContent + = read;
}
System.out.println(myContent);
//如何用正则去匹配图片
//如何得到正则表达式对象
Pattern compile = Pattern.compile("<img.*?(>|/>)");
//得到匹配对象
Matcher matcher = compile.matcher(myContent)
while(matcher.find()){
String group = matcher.group();
System.out.println(group);
}
网友评论