目录
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
进行信息交换、数据交换、通信
①IP
②端口号
常见的协议:http、tcp、udp、ftp。。。
唯一定位一台网络上计算机
127.0.0.1:本地localhost
ipv4:127.0.0.1 四个字节,0-255,总共约42亿个
ipv6: fe80::7c35:c70b:19ee:ba00%21 128位,8个无符号整数
192.168.xx.xx :是专门给组织内部使用的
ABCD类地址
域名的产生就是为了解决IP问题
端口表示计算机上的一个程序的进程
- 不同的进程有不同的端口号,用来区分软件
- 规定端口0-65535
- UDP和TCP的端口均为0-65535
- 端口分类:公有端口 0-1023(尽量不要使用)---- HTTP:80,https:443 ,ftp:21,Telent:23;常见的程序注册端口:1024-49151 分配给用户或者程序 ---- tomcat:8080,mysql:3306,Oracle:1521;动态端口:49152-65535
- 常见命令:netstat -ano(查看所有的端口);netstat -ano|findstr " "(查看指定端口);tasklist|findstr " " (查看指定端口的进程)
协议:约定
网络通信协议:速率、传输码率等等、
TCP/IP协议簇:实际上是一组协议
重要协议对比
TCP:用户传输协议
UDP:用户数据报协议
客户端
- package study01;
-
- import java.io.IOException;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.net.UnknownHostException;
- import java.nio.charset.StandardCharsets;
-
- //客户端
- public class TcpClient {
- public static void main(String[] args) {
- Socket socket =null;
- OutputStream outputStream =null;
- try {
- // 1. 连接地址
- InetAddress serverIP = InetAddress.getByName("127.0.0.1");
- // 2. 创建端口号
- int port=9999;
- // 3. 创建一个socket连接
- socket = new Socket(serverIP,port);
- // 4. 发送消息
- outputStream = socket.getOutputStream();
- outputStream.write("你好".getBytes(StandardCharsets.UTF_8));
-
- } catch (Exception e) {
- e.printStackTrace();
- }finally {
- if(socket!=null){
- try {
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(outputStream!=null){
- try {
- outputStream.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
-
服务端
- package study01;
-
- import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream;
-
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
-
- //服务端
- public class TcpService {
- public static void main(String[] args) {
- ServerSocket serverSocket =null;
- Socket accept = null;
- InputStream is = null;
- ByteArrayOutputStream baos=null;
- //1. 需要创建一个地址给客户端进行连接,使用套接字,然后客户端可以通过9999连接服务端
- try {
- serverSocket = new ServerSocket(9999);
- //2. 等待客户端的连接
- accept = serverSocket.accept();//此时这里的socket就是客户端的socket
- //3. 读取客户端的信息
- is = accept.getInputStream();
- /*
- * 使用管道流
- * */
- baos=new ByteArrayOutputStream();
- byte[] buffer=new byte[1024];
- int len;
- if((len=is.read(buffer))!=-1){
- baos.write(buffer,0,len);
- }
- System.out.println(buffer.toString());
-
- } catch (IOException e) {
- e.printStackTrace();
- }finally {
- //关闭资源
- if(serverSocket!=null){
- try {
- serverSocket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(accept!=null){
- try {
- accept.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(is!=null){
- try {
- is.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(baos!=null){
- try {
- baos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- }
- }
客户端
服务端
服务端
客户端
发送端
【补充:最后需要关闭流】
单纯只有客户端的话是不能连接成功的!会出现错误,所以其实是还是要有一个服务端接收消息,但是客户端并不用像TCP里面一样等待连接建立成功才可以!
接收端
发送端
接收端
发送端线程
接收端线程
学生端
老师端
URL:统一资源定位符
前提是tomcat是开启的
这样就可以了,同样我们可以使用这个方式去网上爬取资源,比如收费歌曲等等!!!
=========================================================================
好了,最近找到工作后就有些懈怠了,现在需要重新抓起来了!!!加油哇,各位!