(简单课设)前端小白刚做的一个简单的移动端项目的分享和总结

前端小白刚做的两个简单项目的分享和总结所用技术为简单的div+css直接上图片代码部分 小滴服务接下来是企业项目部分接下来是如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入所用技术为简单的div+css直接上图片代码部分 小滴服务<!DOCTYP
摘要由CSDN通过智能技术生成

所用技术为简单的div+css

直接上图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码部分 小滴服务

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" name="viewport" content="width=device-width initial-scale=1,user-scalable=no">
    <title>Title</title>
    <link rel="stylesheet" href="Common.css">

    <style>
        .cell{
    display: table;width: 100%;height: 80px;margin-bottom: 10px;
            background-color: white;}
        .cell a{
    display: table-cell;width: 33.3%;text-align: center;vertical-align: middle;text-decoration: none;color: black}

    </style>
</head>
<body>
<div class="title-top" >
    小滴服务
</div>

<div >
    <img src="../icon/banner1.png" alt="" class="middle-picture">
</div>

<div class="cell">
    <a href=""><img src="../icon/index1.png" alt=""><p>企业项目</p></a>
    <a href=""><img src="../icon/index2.png" alt=""><p>平台风采</p></a>
    <a href=""><img src="../icon/index3.png" alt=""><p>报名流程</p></a>
</div>
<div class="cell">
    <a href=""><img src="../icon/index4.png" alt=""><p>企业项目</p></a>
    <a href=""><img src="../icon/index5.png" alt=""><p>平台风采</p></a>
    <a href=""><img src="../icon/index6.png" alt=""><p>报名流程</p></a>
</div>
<div class="cell">
    <a href=""><img src="../icon/index7.png" alt=""><p>企业项目</p></a>
    <a href=""><img src="../icon/index8.png" alt=""><p>平台风采</p></a>
    <a href=""><img src="../icon/index9.png" alt=""><p>报名流程</p></a>
</div>
<div class="cell">
    <a href=""><img src="../icon/index7.png" alt=""><p>企业项目</p></a>
    <a href=""><img src="../icon/index8.png" alt=""><p>平台风采</p></a
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面我将给出一个基于TCP协议的简易聊天机器人C语言示例代码,可以同时与多个客户端进行交互,希望能帮到您: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #include <pthread.h> #define PORT 8888 #define MAX_MSG_SIZE 1024 #define MAX_CLIENTS 10 void *handle_client(void *arg); int main() { int server_fd, new_socket, valread; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address); char buffer[MAX_MSG_SIZE] = {0}; char *hello = "Hello from server"; pthread_t thread_id; int i, client_sockets[MAX_CLIENTS], max_clients = MAX_CLIENTS, activity, sd, max_sd; fd_set readfds; // 创建TCP套接字 if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); } // 设置套接字选项 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); exit(EXIT_FAILURE); } // 初始化服务器地址 address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); // 绑定地址和端口 if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } // 监听连接 if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); } // 初始化客户端套接字列表 for (i = 0; i < max_clients; i++) { client_sockets[i] = 0; } // 循环等待客户端连接和消息 while (1) { // 清空文件描述符集合 FD_ZERO(&readfds); // 将服务器套接字加入文件描述符集合 FD_SET(server_fd, &readfds); max_sd = server_fd; // 将客户端套接字加入文件描述符集合 for (i = 0; i < max_clients; i++) { sd = client_sockets[i]; if (sd > 0) FD_SET(sd, &readfds); if (sd > max_sd) max_sd = sd; } // 等待读取文件描述符集合中的套接字 activity = select(max_sd + 1, &readfds, NULL, NULL, NULL); if ((activity < 0) && (errno != EINTR)) { printf("select error"); } // 如果服务器套接字有新的连接请求 if (FD_ISSET(server_fd, &readfds)) { if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0) { perror("accept"); exit(EXIT_FAILURE); } // 发送欢迎消息 send(new_socket, hello, strlen(hello), 0); printf("Hello message sent\n"); // 将新连接的客户端套接字加入列表中 for (i = 0; i < max_clients; i++) { if (client_sockets[i] == 0) { client_sockets[i] = new_socket; printf("Adding to list of sockets as %d\n" , i); break; } } } // 处理客户端消息 for (i = 0; i < max_clients; i++) { sd = client_sockets[i]; if (FD_ISSET(sd, &readfds)) { // 读取消息 if ((valread = read(sd, buffer, MAX_MSG_SIZE)) == 0) { getpeername(sd, (struct sockaddr*)&address, (socklen_t*)&addrlen); printf("Host disconnected , ip %s , port %d \n" , inet_ntoa(address.sin_addr) , ntohs(address.sin_port)); // 关闭套接字并从列表中移除 close(sd); client_sockets[i] = 0; } else { // 启动新线程处理客户端消息 pthread_create(&thread_id, NULL, handle_client, (void *)&sd); pthread_detach(thread_id); } } } } // 关闭套接字 close(server_fd); return 0; } void *handle_client(void *arg) { int sd = *(int*)arg; char buffer[MAX_MSG_SIZE] = {0}; // 读取客户端消息 read(sd, buffer, MAX_MSG_SIZE); // 根据客户端发送的消息,给出回复 if (strcmp(buffer, "Hello\n") == 0) { printf("Server: Hi there!\n"); send(sd, "Hi there!", strlen("Hi there!"), 0); } else if (strcmp(buffer, "How are you?\n") == 0) { printf("Server: I'm fine, thank you!\n"); send(sd, "I'm fine, thank you!", strlen("I'm fine, thank you!"), 0); } else if (strcmp(buffer, "Quit\n") == 0) { printf("Server: Goodbye!\n"); send(sd, "Goodbye!", strlen("Goodbye!"), 0); } else { printf("Server: Sorry, I don't understand.\n"); send(sd, "Sorry, I don't understand.", strlen("Sorry, I don't understand."), 0); } // 关闭套接字 close(sd); return NULL; } ``` 这个示例代码创建了一个TCP服务器程序,等待客户端连接和消息,并根据预先设定好的回复规则,与客户端进行交互。当收到客户端发送的消息后,服务器会根据预先设定好的回复规则,给客户端发送回复。当客户端发送“Quit”消息时,服务器会关闭连接。在实际应用中,可以根据需要修改回复规则和相关参数。同时,这个示例代码使用了多线程技术,可以同时处理多个客户端的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值