Linux大作业步骤

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课程中的学习笔记、大作业完成步骤记录,且要求有相关图片、代码或命令。(参考以下内容:)

个人博客搭建保姆级教程4——hugo

Linux下搭建Hugo博客并推送到github个人博客

Linux学习笔记

  • 使用Hugo,将上述内容生成静态网站,部署到Web服务器(如Nginx或Apache),访问Web服务器,测试可以正常访问。
  1. 部署Web服务器,首先开启apache:

在这里插入图片描述

  1. 然后再myhugo目录下输入hugo生成public文件夹,将public文件夹里的全部文件复制到/var/www/html中,即输入如下命令:
cp -r public/* /var/www/html

在这里插入图片描述

  1. 然后执行Ifconfig查看本机ip,最后在网页中输入192.168.29.132:8081/,即可看到本地部署的Web服务器上的Hugo网页:

在这里插入图片描述

  1. 部署上述静态网站,使其可以公网访问,可以是自己的云服务器,或者一些免费的托管平台,如github pages。

Github配置仓库远程连接:

在这里插入图片描述

在myhugo目录下输入hugo生成public文件夹,然后在public目录下输入如下代码push:

git add .
git commit -m “hugo”
git push -u origin master 

最后在在浏览器中输入https://li-muyaodesu.github.io即可。

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值