Windows + Linux(虚拟机)打造PHP开发环境
yuyutoo 2024-11-20 23:56 2 浏览 0 评论
创建虚拟机
在Windows上创建虚拟机有很多种方式,可以使用 VirtualBox、VMware等第三方软件,也可用Windows自带的Hyper-V,可以选择一种自己习惯的工具来创建和管理虚拟机,下面就以Hyper-V为例创建一个虚拟机
注意:Hyper-V功能默认是关闭的,需要自己手动开启,关于如何启用Hyper-V请另行查阅文档说明
准备系统镜像文件
在开始创建虚拟机之前,我们还需要准备一个用于安装操作系统的镜像文件,我这里选择的是CentOS 7 作为系统开发环境
创建NAT虚拟交换机
由于默认的虚拟交换机是随机分配的IP,每次重启电脑后网关都会变化,无法为虚拟机设置静态IP,而我们以后基本上都要通过IP远程SSH去管理Linux虚拟机,所以还需要有一个能配置静态IP的虚拟交换机
以管理员身份运行PowerShell,在PowerShell中运行以下命令,创建一个新的NAT虚拟交换机
# 创建虚拟交换机,等同于在Hyper-V管理器界面中新建虚拟网络交换机
New-VMSwitch -SwitchName "NAT-VM" -SwitchType Internal
# 查看 NAT-VM 的 ifindex
Get-NetAdapter
# 创建ip,InterfaceIndex参数自行调整为上一步获取到的ifindex。这一步等同于在 控制面板-网卡属性 中设置ip
New-NetIPAddress -IPAddress 192.168.100.1 -PrefixLength 24 -InterfaceIndex 6
# 创建nat网络,这一步是教程中的关键命令,24为子网掩码位数,即:255.255.255.0
New-NetNat -Name NAT-VM -InternalIPInterfaceAddressPrefix 192.168.100.0/24
新建虚拟机
打开 Hyper-V管理器 -> 新建 -> 虚拟机
安装系统
在开始安装之前,如果在上一步新建虚拟机的时候选择了二代虚拟机,则需要在虚拟机设置中把安全启动关闭掉,否则无法正常进入到安装界面
为了加快安装速度,可以多分配几个处理器来加快安装速度,等安装好之后在调回来
开始安装
等待安装完成后,点击重启就能进入到安装好的系统了
搭建PHP开发环境
Nginx + MySQL + PHP 是目前比较流行的php环境组合,下面就以这样一个组合来搭建一个PHP开发环境,你也可以使用一键安装脚本来完成此步骤,推荐OneinStack - 一键PHP/JAVA安装工具
通过之前配置好的静态IP远程SSH到虚拟机
ssh qsz@192.168.100.11
安装Nginx
安装编译工具
yum -y install wget gcc-c++
如果你使用的是普通用户登录的话,可能会遇到如下问题
解决办法,切换到root用户,将当前用户加入到sudoers这个文件中
su # 切换到root账号
yum -y install vim # 先使用root账号安装vim文本编辑器
vim /etc/sudoers # 编辑 /etc/sudoers 文件,将需要授权的账号加入到该文件中,完成授权操作,如下图
之后切换回普通用户,继续操作
su qsz # 切换到指定用户
sudo yum -y install wget gcc-c++
wget https://nginx.org/download/nginx-1.21.0.tar.gz # 下载Nginx源文件压缩包
sudo tar -zxvf nginx-1.21.0.tar.gz -C /usr/local/src/ # 解压文件到指定位置
安装必要扩展
sudo yum -y install pcre-devel openssl-devel
编译安装
cd /usr/local/src/nginx-1.21.0 # 进入到解压后的目录
sudo ./configure \ # 配置编译选项
--prefix=/usr/local/nginx-1.21.0 \ # 配置安装目录
--user=qsz \ # 配置运行用户
--group=qsz \ # 配置运行用户组
--with-http_ssl_module \ # 开启https
sudo make && sudo make install # 编译并安装
加入到系统服务
创建系统服务文件 /usr/lib/systemd/system/nginx.service,并写入如下内容
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx-1.21.0/logs/nginx.pid
ExecStartPre=/usr/local/nginx-1.21.0/sbin/nginx -t
ExecStart=/usr/local/nginx-1.21.0/sbin/nginx
ExecReload=/usr/local/nginx-1.21.0/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
开机启动
sudo systemctl enable nginx
安装PHP
下载编译文件
cd ~ # 回到主目录
wget https://www.php.net/distributions/php-8.0.7.tar.gz # 下载php编译包
sudo tar -zxvf php-8.0.7.tar.gz -C /usr/local/src/ # 解压文件到指定位置
安装扩展
sudo yum -y install libxml2-devel sqlite-devel curl-devel
sudo yum -y install https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-6.8.2-1.el7.x86_64.rpm
sudo yum -y install https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/o/oniguruma-devel-6.8.2-1.el7.x86_64.rpm
编译安装
按需选择需要开启的扩展
cd /usr/local/src/php-8.0.7/ # 进入到解压后的目录
sudo ./configure \ # 配置编译参数
--prefix=/usr/local/php-8.0.7 \ # 配置安装目录
--enable-fpm \ # 开启fpm
--enable-mbstring \ # 开启多字节字符串函数
--with-openssl \ # openssl
--with-pdo-mysql \ # 开启pdo支持
--with-curl \ # 开启curl支持
--with-pear \ # 开启pear支持,用于安装php扩展
--with-fpm-user=qsz \ # 配置fpm运行用户
--with-fpm-group=qsz \ # 配置fpm运行用户组
sudo make && sudo make install # 编译安装
创建配置文件
sudo cp php.ini-development /usr/local/php-8.0.7/lib/php.ini # 复制配置文件到安装目录
cd /usr/local/php-8.0.7/etc/
sudo cp php-fpm.conf.default php-fpm.conf # 创建fpm主配置文件
sudo cp ./php-fpm.d/www.conf.default ./php-fpm.d/www.conf # 创建fpm子配置文件
加入到环境变量
创建软连接
sudo ln -s /usr/local/php-8.0.7/bin/php /usr/local/bin/php
查看效果
加入到系统服务
创建系统服务文件 /usr/lib/systemd/system/php8.0-fpm.service,并写入如下内容
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php-8.0.7/var/run/php-fpm.pid
ExecStart=/usr/local/php-8.0.7/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php-8.0.7/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
开机启动
sudo systemctl enable php8.0-fpm
安装Composer
cd ~
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
sudo mv composer.phar /usr/local/bin/composer
执行命令的时候可能会遇到如下问题
根据给出的提示说明,应该是缺少了zlib扩展,安装一下该扩展就好
cd /usr/local/src/php-8.0.7/ext/zlib/ # 进入源码扩展目录
sudo /usr/local/php-8.0.7/bin/phpize # 创建编译配置
sudo ./configure --with-php-config=/usr/local/php-8.0.7/bin/php-config # 配置编译参数
sudo make && sudo make install # 编译安装
# 编辑 /usr/local/php-8.0.7/lib/php.ini 文件,加入如下内容
extension=zlib.so
如果出现以下提示就先执行一下 mv config0.m4 config.m4 命令后再执行 sudo usr/local/php-8.0.7/bin/phpize
如果出现以下提示说明缺少了autoconf编译环境,执行sudo yum -y install autoconf安装编译环境后在操作就好
安装Git
下载二进制包
Git二进制包下载地址
cd ~
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
安装扩展
sudo yum -y install perl-CPAN asciidoc xmlto
sudo yum -y install https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/d/docbook2X-0.8.8-17.el7.x86_64.rpm
sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
编译安装
sudo tar -zxvf git-2.9.5.tar.gz -C /usr/local/src/
cd /usr/local/src/git-2.9.5/
sudo make configure
sudo ./configure --prefix=/usr/local/git-2.9.5
make all doc info
sudo make install install-doc install-html install-info
添加到环境变量
sudo ln -s /usr/local/git-2.9.5/bin/git /usr/local/bin/
安装MySQL
下载二进制包
MySQL二进制文件下载地址
建议大家用迅雷下载好后再上传到虚拟机中吧,官网下载速度实在太慢了,惨不忍睹
使用sftp把文件上传到虚拟机,默认会上传到用户主目录下
sftp qsz@192.168.100.11
创建用户
sudo useradd -M -U -r -s /sbin/nologin mysql
安装
sudo tar -zxvf mysql-8.0.25-el7-x86_64.tar.gz -C /usr/local/
sudo mv /usr/local/mysql-8.0.25-el7-x86_64/ /usr/local/mysql-8.0.25
rm -rf /etc/my.cnf /etc/my.cnf.d/
cd /usr/local/mysql-8.0.25/
sudo mkdir {mysql-files,log,data,etc,tmp}
sudo chown -R mysql.mysql /usr/local/mysql-8.0.25/
初始化数据
sudo bin/mysqld --initialize --basedir=/usr/local/mysql-8.0.25/ --datadir=/usr/local/mysql-8.0.25/data/ --user=mysql
sudo ln -s /usr/local/mysql-8.0.25/bin/mysql /usr/local/bin/ # 加入到环境变量
创建配置文件
创建文件 /usr/local/mysql-8.0.25/etc/my.cnf,并写入如下内容
[mysqld]
daemonize = on
user = mysql
port = 3306
basedir = /usr/local/mysql-8.0.25
datadir = /usr/local/mysql-8.0.25/data
socket = /usr/local/mysql-8.0.25/tmp/mysql.sock
bind-address = 0.0.0.0
pid-file = /usr/local/mysql-8.0.25/tmp/mysqld.pid
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
max_connections = 2408
log-error = /usr/local/mysql-8.0.25/log/mysqld.log
加入到系统服务
创建系统服务文件 /usr/lib/systemd/system/mysqld8.service,并写入如下内容
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Service]
User=mysql
Group=mysql
Type=forking
TimeoutSec=0
PermissionsStartOnly=true
ExecStart=/usr/local/mysql-8.0.25/bin/mysqld --defaults-file=/usr/local/mysql-8.0.25/etc/my.cnf
LimitNOFILE = 5000
Restart=on-failure
RestartPreventExitStartus=1
PrivateTmp=false
[Install]
WantedBy=multi-user.target
修改密码
启动mysql服务
sudo systemctl start mysqld8
使用之前得到的初始密码登录mysql
mysql -uroot -p'Iqua+osDJ9y6' -S /usr/local/mysql-8.0.25/tmp/mysql.sock
设置密码
mysql> set password='MyPassword@123';
开机启动
sudo systemctl enable mysqld8
利用共享文件夹实现Windows上编码Linux上运行
利用Windows上开启共享文件夹Linux上挂载共享文件夹,来实现在Windows上编写代码,然后在Linux上实时查看效果
或者反过来在Linux开启共享文件夹,Windows上挂载共享文件夹来实现都可以
前者在运行大项目的时候会出现明显的加载缓慢,后者则是在使用ide等编辑器写代码的时候会有的卡顿现象
下面就以第一种方式来实现效果
Windows上创建共享文件夹
新建目录web
Web目录结构
├─nginx # 用于存放nginx相关配置文件
│ ├─log # 用于存放nginx日志文件
│ │ ├─access # 访问日志
│ │ └─error # 错误日志
│ ├─php # 存放php资源反向代理配置
│ ├─rewrite # 存放路由重写配置文件
│ └─vhost # 存放虚拟主机配置文件
└─project # 用于存放项目
选择文件夹右键 -> 属性 -> 共享 -> 高级共享
挂载共享目录
安装cifs工具包,用于连接挂载smb共享目录
sudo yum -y install cifs-utils
创建挂载点
sudo mkdir /web
挂载共享目录
# username指定登录共享目录的用户名
# password指定登录共享目录的用户密码
# uid用于指定挂载目录的所有者的uid,可通过 cat /etc/passwd 查看,指定后挂载目录所有者将被设置为该用户
# gid用于指定挂载目录的所属组的gid,可通过 cat /etc/group 查看,指定后挂载目录所属组将被设置为该用户组
# //192.168.123.211/web 其中 192.168.123.211 为开启了共享目录的计算机IP地址,/web 为共享的目录名称
sudo mount -t cifs -o username=qsz,password=123123,uid=1000,gid=1000 //192.168.123.211/web /web
开机挂载共享目录
创建启动脚本文件 ~/mount.sh,写入如下内容
#!/bin/bash
mount -t cifs -o username=qsz,password=123123,uid=1000,gid=1000 //192.168.123.211/web /web
授予脚本可执行权限
chmod +x ~/mount.sh
在centos7中,/etc/rc.d/rc.local的权限被降低了,所以需要执行如下命令赋予其可执行权限
sudo chmod +x /etc/rc.d/rc.local
编辑 /etc/rc.d/rc.local 文件将启动脚本加入到系统的启动脚本中
...
touch /var/lock/subsys/local
+ /home/qsz/mount.sh
配置Nginx
配置PHP脚本转发
nginx是无法解析php脚本的,所以需要将php脚本转发给到php-fpm解析执行后将结果返回给到nginx处理,为了方便管理这里就单独创建一个文件作为转发规则配置,然后在需要到的地方直接引入该配置文件
添加php转发规则配置文件 /web/nginx/php/enable-php-80.conf
location ~[^/]\.php
{
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
fastcgi_index index.php;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_NAME $script;
include fastcgi_params;
include fastcgi.conf;
}
路由重写
很多框架都有自己的路由重写规则,这里以thinkphp为例,为了方便管理这里就单独创建一个文件作为重写配置,然后在需要到的地方直接引入该配置文件
添加路由重写配置文件 /web/nginx/rewrite/thinkphp.conf
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?s=/$1 last;
break;
}
}
虚拟主机配置
很多时候我们需要根据不同的域名来访问不同的项目,如果都写到nginx.conf文件里面,等到项目越来越多的时候就会变得难以管理,所以就需要将这些配置单独抽离出来,然后在nginx.conf中引入。
添加虚拟主机配置文件 /web/nginx/vhost/example.conf
server
{
listen 80;
server_name example.com;
index index.php index.html index.htm;
root /web/project/example;
# ssl证书配置
# ssl_session_cache shared:SSL:10m;
# ssl_session_timeout 10m;
# ssl_certificate /web/nginx/ssl/devyun.dezhikm.com/fullchain.pem;
# ssl_certificate_key /web/nginx/ssl/devyun.dezhikm.com/privkey.pem;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
# php引用配置
include /web/nginx/php/enable-php-80.conf;
# 伪静态
include /web/nginx/rewrite/thinkphp.conf;
access_log /web/nginx/log/access/example.com.log;
error_log /web/nginx/log/error/example.com.log;
}
配置nginx.conf
备份nginx主配置文件
sudo mv /usr/local/nginx-1.21.0/conf/nginx.conf /usr/local/nginx-1.21.0/conf/nginx.conf.bak
新建nginx主配置文件 /usr/local/nginx-1.21.0/conf/nginx.conf,写入如下内容
user qsz qsz;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# 日志格式设置
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
log_format json escape=json '{"clientIp": "$remote_addr", "agent": "$http_user_agent", "timeLocal": "$time_local", "status": $status, "upstreamStatus": $upstream_status, "requestTime": "$request_time", "upstreamResponseTime": "$upstream_response_time", "requestUri": "$request_uri", "requestMethod": "$request_method", "requestBody": "$request_body"}';
# 日志文件设置
access_log /web/nginx/log/access/default.log;
error_log /web/nginx/log/error/default.log;
sendfile on;
keepalive_timeout 65;
# 引入虚拟主机配置
include /web/nginx/vhost/*.conf;
# 默认虚拟主机
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
查看效果
在完成上面的配置后,接下来就可以查看配置是否生效了,在 配置Nginx > 虚拟主机配置 这一步中我们已经添加了一个虚拟主机的配置文件 example.conf,现在还需要将配置中的 example.com 域名加入到 hosts 文件中,之后才能够使用该域名访问
配置hosts
在Windows上编辑 C:\Windows\System32\drivers\etc\hosts 文件,加入如下内容
+ 192.168.100.11 example.com www.example.com
启动服务
回到虚拟机中,启动nginx服务和php-fpm服务
sudo systemctl start nginx php8.0-fpm
开放 80 端口,以便可以在Windows上访问http服务
sudo firewall-cmd --zone=public --add-port=80/{tcp,udp} --permanent # 开放端口
sudo firewall-cmd --reload # 重新加载配置使配置生效
查看
在Windows上打开浏览器,在地址栏输入 example.com
可以看到这时候已经可以访问到虚拟机上的服务了,但是因为我们example项目下还什么文件都没有,所以返回了403错误,接下来我们在 D:\web\project\example 目录下新建一个 index.html 文件,并写入如下内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
再次刷新页面就可以实时看到效果
接下来我们在 D:\web\project\example目录下创建一个 index.php 文件,并写入如下内容
<?php
phpinfo();
刷新页面,看看是否能正常解析
可以看到php文件已经能被正常解析了,现在我们就可以愉快地在Windows上用各种编辑器和IDE来开发项目,而不用管php环境的问题了,所有的开发环境都在Linux虚拟机中
配置HTTP代理
配置HTTP代理,用于在windows上可以直接访问到虚拟机上的服务,这样就不需要在windows上配置host了
安装squid代理服务
sudo yum -y install squid
开机启动代理服务
sudo systemctl enable squid
关闭代理缓存
编辑 /etc/squid/squid.conf 文件,加入如下内容
...
+ acl NCACHE method GET
+ no_cache deny NCACHE
开放代理端口
squid默认代理端口为3128,可以在/etc/squid/squid.conf配置文件中进行修改
sudo firewall-cmd --zone=public --add-port=3128/{tcp,udp} --permanent # 开放端口
sudo firewall-cmd --reload # 重新加载配置使配置生效
连接代理
在Windows上打开浏览器,安装 ProxySwitchyOmega 插件
配置插件连接代理
在Widdows上删除上一节中添加的host,编辑 C:\Windows\System32\drivers\etc\hosts 文件
- 192.168.100.11 example.com www.example.com
在Linux虚拟机中编辑 /etc/hosts 文件,加入如下内容
+ 127.0.0.1 example.com www.example.com
在Windows上打开浏览器,使用代理来访问虚拟机的服务
在浏览器地址栏输入 example.com
在做接口开发的时候一般是用postman来做接口调试,下面来说一下postman如何使用代理
配置好后就可以直接在postman中直接访问虚拟机上的服务了
建议
建议安装两个浏览器,一个用来日常浏览网页,一个用来开发调试,如果只有一个浏览器,在使用代理的时候,就需要经常切换代理,特别是还开了vpn的情况下,很有可能会和vpn冲突
我自己是使用edge和chrome,日常使用edge,开发用chrome
相关推荐
- TCP协议原理,有这一篇就够了
-
先亮出这篇文章的思维导图:TCP作为传输层的协议,是一个软件工程师素养的体现,也是面试中经常被问到的知识点。在此,我将TCP核心的一些问题梳理了一下,希望能帮到各位。001.能不能说一说TC...
- Win10专业版无线网络老是掉线的问题
-
有一位电脑基地的用户,使用...
- 学习计算机网络需要掌握以下几方面基础知识
-
计算机基础知识操作系统:了解常见操作系统(如Windows、Linux)的基本操作和网络配置,例如如何设置IP地址、子网掩码、网关和DNS服务器等,以及如何通过命令行工具(如ping、tr...
- 网络工程师的圣经!世界级网工手绘268张图让TCP/IP直接通俗易懂
-
要把知识通俗地讲明白,真的不容易。——读者说TCP/IP从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议。实际生活当中有时候也确实就是这两种协议。然而在很多情况下,它只是...
- 三分钟了解通信知识TCP与IP协议(含“通信技术”资料分享)
-
TCP/IPTCP/IP分层模型①应用层...
- 网闸与防火墙:网络安全设备的差异与应用
-
在网络安全领域,网闸(安全隔离网闸,GAP)和防火墙(Firewall)是两类重要的防护设备。尽管它们都服务于网络安全防护,但在设计理念、技术原理、安全效能及适用场景等方面存在显著差异,以下从五个维度...
- S7-300的TCP/IP通信
-
一、首先在项目中创建2个S7-300的站点;二、硬件组态中,设置合适的TCP/IP地址,在同一网段内;...
- 西门子S7-1500 PLC的 MODBUS TCP通信
-
MODBUSTCP使MODBUS_RTU协议运行于以太网,MODBUSTCP使用TCP/IP和以太网在站点间传送MODBUS报文,MODBUSTCP结合了以太网物理网络和网络标准TC...
- 系统规划与管理师新版备考必备:第7章考点思维导图解析
-
备考系统规划与管理师的小伙伴们,福利又来啦!今天为大家带来《系统规划与管理师(第2版)》第7章考点的思维导图,助你高效梳理重点,让备考更有方向!...
- TCP/IP、Http、Socket 有何区别与联系?
-
HTTP协议对应于应用层,Socket则是对TCP/IP协议的封装和应用(程序员层面上)。HTTP是应用层协议,主要解决如何包装数据。而我们平时说的最多的Socket是什么呢?实际上...
- 西门子PLC串口协议与以太网通信协议对比
-
西门子plc品牌众多,通信协议的类型就更多了,具体可分为串口协议和以太网通信协议两大类。...
- 网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别
-
本文引用了作者Fundebug的“一文搞懂TCP与UDP的区别”一文的内容,感谢无私分享。1、引言...
- 程序员必备的学习笔记《TCP/IP详解(一)》
-
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...
- 一文读懂TCP/IP协议工作原理和工作流程
-
简述本文主要介绍TCP/IP协议工作原理和工作流程。含义TCP/IP协议,英文全称TransmissionControlProtocol/InternetProtocol,包含了一系列构成互联网...
- 如何在 Windows 10 和 Windows 11 上重置 TCP/IP 堆栈
-
传输控制协议/Internet协议,通常称为TCP/IP,是您的WindowsPC如何与Internet上的其他设备进行通信的关键部分。但是当事情出错时会发生什么?你如何解决它?幸运的...
你 发表评论:
欢迎- 一周热门
-
-
前端面试:iframe 的优缺点? iframe有那些缺点
-
带斜线的表头制作好了,如何填充内容?这几种方法你更喜欢哪个?
-
漫学笔记之PHP.ini常用的配置信息
-
其实模版网站在开发工作中很重要,推荐几个参考站给大家
-
推荐7个模板代码和其他游戏源码下载的网址
-
[干货] JAVA - JVM - 2 内存两分 [干货]+java+-+jvm+-+2+内存两分吗
-
正在学习使用python搭建自动化测试框架?这个系统包你可能会用到
-
织梦(Dedecms)建站教程 织梦建站详细步骤
-
【开源分享】2024PHP在线客服系统源码(搭建教程+终身使用)
-
2024PHP在线客服系统源码+完全开源 带详细搭建教程
-
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)