Linux大作业步骤
本次大作业使用Debian10,因为安装和编译比openeuler方便快捷。
1.在Linux下,安装git,使用git管理大作业相关的代码、配置文件等,要求有能反映大作业过程的git提交记录。
安装完成后,在gitee上建立本项目仓库。
配置本地账户密码:
输入如下查看:
git config --list --global
建立远程连接:
输入git init初始化仓库:
在要push的目录下输入:
git add .
git commit -m "test"
git push -u origin "master"
2.在Linux下,利用 socket 技术编写程序,包含客户端和服务端,实现两者之间的信息传递。
在桌面创建linuxhomework文件夹,在文件夹里创建service.c文件和client.c文件,放入以下代码:
服务端代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define SERV_IP "127.0.0.1" /* 服务器可以用 htonl(INADDR_ANY) 自动选择可用IP */
#define SERV_PORT 18888
#define MAX_CONN 100 /* 连接队列最多可以有 100 个客户端在排队等待建立连接 */
int main() {
char buf[1024];
int n;
int sockfd, clientfd;
struct sockaddr_in serv_addr, client_addr;
socklen_t socklen;
sockfd = socket(AF_INET, SOCK_STREAM, 0); /* IPv4 协议, TCP 协议*/
if (sockfd == -1) {
perror("socket");
return -1;
}
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(SERV_PORT); /* 指定端口号 */
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); /* 自动选择可用IP */
if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
perror("bind");
return -1;
}
if (listen(sockfd, MAX_CONN) < 0) {
perror("listen");
return -1;
}
socklen = sizeof(client_addr);
clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &socklen);
if (clientfd < 0) {
perror("accept");
return -1;
}
inet_ntop(AF_INET, &client_addr, buf, INET_ADDRSTRLEN);
printf("client IP is: %s, client port is: %d\n", buf, ntohs(client_addr.sin_port));
while(1) {
n = read(clientfd, buf, sizeof(buf));
for (int i = 0; i < n; i++) {
buf[i] = toupper(buf[i]);
}
write(clientfd, buf, n);
}
close(clientfd);
close(sockfd);
return 0;
}
客户端代码:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define error_exit(msg) \
do {perror(msg); exit(EXIT_FAILURE);} while(0)
#define SERV_IP "127.0.0.1"
#define SERV_PORT 18888
int main(int argc, char *argv[]) {
int sockfd, ret;
int n;
char buf[BUFSIZ];
struct sockaddr_in serv_addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1)
error_exit("socket");
memset(&serv_addr, 0, sizeof(serv_addr));
ret = inet_pton(AF_INET, SERV_IP, &serv_addr.sin_addr.s_addr);
if (ret <= 0) {
if (ret == 0)
error_exit("format error");
else
error_exit("inet_pton");
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(SERV_PORT);
ret = connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));
if (ret == -1) {
error_exit("connect");
}
while(1) {
fgets(buf, sizeof(buf), stdin);
write(sockfd, buf, strlen(buf));
n = read(sockfd, buf, sizeof(buf));
write(STDOUT_FILENO, buf, n);
}
close(sockfd);
return 0;
}
输入编译命令:
运行结果:
3.Hugo是一个静态网站生成器,官网为:https://gohugo.io/,查阅相关资料,在Linux下,完成以下内容:
- 配置好Hugo相关环境:
- 使用Markdown语法编写网站内容,至少要包含的内容:Linux课程中的学习笔记、大作业完成步骤记录,且要求有相关图片、代码或命令。(参考以下内容:)
- 使用Hugo,将上述内容生成静态网站,部署到Web服务器(如Nginx或Apache),访问Web服务器,测试可以正常访问。
- 部署Web服务器,首先开启apache:
- 然后再myhugo目录下输入hugo生成public文件夹,将public文件夹里的全部文件复制到/var/www/html中,即输入如下命令:
cp -r public/* /var/www/html
- 然后执行Ifconfig查看本机ip,最后在网页中输入192.168.29.132:8081/,即可看到本地部署的Web服务器上的Hugo网页:
- 部署上述静态网站,使其可以公网访问,可以是自己的云服务器,或者一些免费的托管平台,如github pages。
Github配置仓库远程连接:
在myhugo目录下输入hugo生成public文件夹,然后在public目录下输入如下代码push:
git add .
git commit -m “hugo”
git push -u origin master
最后在在浏览器中输入https://li-muyaodesu.github.io即可。