为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

cjozGV 的学生作业:

/** * (1)要求大家是设计⼀个design_arary()函数,自己定义返回值和参数。 要求desigan_array()函数中定义一个,static char a[100] = {0};,然后 把数组首地址和长度返回。 * (2)设计一个input_array()函数,自定义返回和参数,要求用户从键盘 输入任意的字符串,存放到a数组中 * (3)设计一个output_array()函数,要求输出a数组中的每一个字符, 以空格作为区分. w u h a n s h a n g h a i * (4)设计一个cout_space()函数,自定义返回和参数,要求用户统计数组a中用户 输入的空格个数,并返回值给main函数。 * (5)main()函数调用以上函数,并输出空格个数。 */ #include "stdio.h" #include "string.h" //1. 定义静态数组并返回首地址和长度 void design_arary(char **arr,int *len){ static char a[100] = {0}; *arr = a; //修改main中的a,使其指向a[100] *len = sizeof(a); //返回数组长度 } //2. 从键盘输入字符串并存入数组 void input_array(char *arr){ printf("请输入任意字符串(不超过99个字符): \n"); fgets(arr,100,stdin); //读取输入,包括空格 //取出末尾的换行符 size_t length = strlen(arr); if(length > 0 && arr[length -1] == '\n'){ // 检查最后一个字符是否是 '\n' arr[length - 1] = '\0'; // 如果是,替换为字符串结束符 '\0' } } //3. 输出数组中的每一个字符,以空格分隔 void output_array(const char *arr){ for (int i = 0; arr[i] != '\0'; i++) { printf("%c ",arr[i]); } printf("\n"); } //4. 统计数组中的空格个数 int count_space(const char *arr){ int count = 0; for (int i = 0; arr[i] != '\0';i++){ if(arr[i] == ' '){ count++; } } return count; } int main(){ char *a = NULL; // 数组首地址 int len = 0; //数组首长度 //1.设计数组 design_arary(&a,&len); //2.输出字符串 input_array(a); //3.输出数组内容 每个字符以空格分隔 printf("数组中的字符 以空格分隔:\n"); output_array(a); //4.统计空格个数 int spaces = count_space(a); printf("空格个数:%d\n",spaces); return 0; }

得分 100
学习任务

jelasin 的学生作业:

#include #include #include #include #include #include #include #define SERVER_PORT 8080 #define BACKLOG 5 #define BUFFER_SIZE 1024 // 函数:创建和绑定服务器socket int create_and_bind_server(const char* ip, int port) { int server_socket; struct sockaddr_in server_addr; int reuse = 1; // 1. 创建套接字 server_socket = socket(AF_INET, SOCK_STREAM, 0); if (server_socket == -1) { perror("socket创建失败"); return -1; } printf("Socket创建成功 (fd: %d)\n", server_socket); // 设置SO_REUSEADDR选项 if (setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1) { perror("setsockopt失败"); close(server_socket); return -1; } // 2. 配置服务器地址结构 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); // 根据IP参数设置绑定地址 if (ip == NULL || strcmp(ip, "0.0.0.0") == 0) { server_addr.sin_addr.s_addr = INADDR_ANY; // 绑定到所有可用接口 printf("配置为监听所有接口 (0.0.0.0:%d)\n", port); } else { if (inet_aton(ip, &server_addr.sin_addr) == 0) { printf("无效的IP地址: %s\n", ip); close(server_socket); return -1; } printf("配置为监听指定IP (%s:%d)\n", ip, port); } // 3. 绑定IP地址和端口号 if (bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("bind失败"); close(server_socket); return -1; } printf("成功绑定到端口 %d\n", port); return server_socket; } int main(int argc, char *argv[]) { int server_socket, client_socket; struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); char buffer[BUFFER_SIZE]; ssize_t bytes_received; // 解析命令行参数 char *server_ip = NULL; int server_port = SERVER_PORT; if (argc >= 2) { server_port = atoi(argv[1]); if (server_port 65535) { printf("无效端口号: %s\n", argv[1]); exit(EXIT_FAILURE); } } if (argc >= 3) { server_ip = argv[2]; } // 创建和绑定服务器socket server_socket = create_and_bind_server(server_ip, server_port); if (server_socket == -1) { exit(EXIT_FAILURE); } // 4. 开始监听 if (listen(server_socket, BACKLOG) == -1) { perror("listen失败"); close(server_socket); exit(EXIT_FAILURE); } printf("服务器开始监听,等待客户端连接...\n"); // 5. 主循环:接受客户端连接 while (1) { printf("\n等待新的客户端连接...\n"); // 接受客户端连接 client_socket = accept(server_socket, (struct sockaddr*)&client_addr, &client_addr_len); if (client_socket == -1) { perror("accept失败"); continue; } printf("客户端连接成功: %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); // 与客户端通信 while (1) { bytes_received = recv(client_socket, buffer, BUFFER_SIZE - 1, 0); if (bytes_received > 0) { buffer[bytes_received] = '\0'; printf("收到消息: %s", buffer); // 简单回显 char response[BUFFER_SIZE]; snprintf(response, sizeof(response), "Echo: %s", buffer); send(client_socket, response, strlen(response), 0); } else if (bytes_received == 0) { printf("客户端断开连接\n"); break; } else { perror("recv失败"); break; } } close(client_socket); } close(server_socket); return 0; } ➜ 6 ./server 8080 Socket创建成功 (fd: 3) 配置为监听所有接口 (0.0.0.0:8080) 成功绑定到端口 8080 服务器开始监听,等待客户端连接... 等待新的客户端连接... 客户端连接成功: 127.0.0.1:43404 收到消息: ls 收到消息: hello 客户端断开连接 等待新的客户端连接... ➜ 6 ./client 成功连接到服务器 127.0.0.1:8080 输入消息发送到服务器 (输入'quit'退出): 客户端> ls 服务器响应: Echo: ls 客户端> hello 服务器响应: Echo: hello 客户端> quit 客户端退出...

得分 100
学习任务

jelasin 的学生作业:

#include #include #include #include #include #include #include #define SERVER_IP "127.0.0.1" #define SERVER_PORT 8080 #define BUFFER_SIZE 1024 int main() { int client_socket; struct sockaddr_in server_addr; char buffer[BUFFER_SIZE]; ssize_t bytes_received; // 创建套接字 client_socket = socket(AF_INET, SOCK_STREAM, 0); if (client_socket == -1) { perror("socket创建失败"); exit(EXIT_FAILURE); } // 配置服务器地址结构 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); // 连接到服务器 if (connect(client_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("连接服务器失败"); close(client_socket); exit(EXIT_FAILURE); } printf("成功连接到服务器 %s:%d\n", SERVER_IP, SERVER_PORT); printf("输入消息发送到服务器 (输入'quit'退出):\n"); while (1) { // 从用户获取输入 printf("客户端> "); fflush(stdout); if (fgets(buffer, BUFFER_SIZE, stdin) == NULL) { break; } // 检查退出条件 if (strncmp(buffer, "quit", 4) == 0) { printf("客户端退出...\n"); break; } // 发送消息到服务器 ssize_t bytes_sent = send(client_socket, buffer, strlen(buffer), 0); if (bytes_sent == -1) { perror("发送消息失败"); break; } // 接收服务器响应 bytes_received = recv(client_socket, buffer, BUFFER_SIZE - 1, 0); if (bytes_received > 0) { buffer[bytes_received] = '\0'; printf("服务器响应: %s", buffer); } else if (bytes_received == 0) { printf("服务器关闭了连接\n"); break; } else { perror("接收消息失败"); break; } } // 关闭套接字 close(client_socket); return 0; } 6 ./client 成功连接到服务器 127.0.0.1:8080 输入消息发送到服务器 (输入'quit'退出): 客户端> hello 服务器响应: word 客户端> quit 客户端退出... ➜ 6 nc -lvvp 8080 Listening on 0.0.0.0 8080 Connection received on localhost 46770 hello word

得分 100
学习任务

jelasin 的学生作业:

#include #include #include #include #include #include #include #define SERVER_IP "127.0.0.1" #define SERVER_PORT 8080 #define BUFFER_SIZE 1024 int main() { int client_socket; struct sockaddr_in server_addr; char buffer[BUFFER_SIZE]; ssize_t bytes_received; // 创建套接字 client_socket = socket(AF_INET, SOCK_STREAM, 0); if (client_socket == -1) { perror("socket创建失败"); exit(EXIT_FAILURE); } // 配置服务器地址结构 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(SERVER_PORT); server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); // 连接到服务器 if (connect(client_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("连接服务器失败"); close(client_socket); exit(EXIT_FAILURE); } printf("成功连接到服务器 %s:%d\n", SERVER_IP, SERVER_PORT); printf("输入消息发送到服务器 (输入'quit'退出):\n"); while (1) { // 从用户获取输入 printf("客户端> "); fflush(stdout); if (fgets(buffer, BUFFER_SIZE, stdin) == NULL) { break; } // 检查退出条件 if (strncmp(buffer, "quit", 4) == 0) { printf("客户端退出...\n"); break; } // 发送消息到服务器 ssize_t bytes_sent = send(client_socket, buffer, strlen(buffer), 0); if (bytes_sent == -1) { perror("发送消息失败"); break; } // 接收服务器响应 bytes_received = recv(client_socket, buffer, BUFFER_SIZE - 1, 0); if (bytes_received > 0) { buffer[bytes_received] = '\0'; printf("服务器响应: %s", buffer); } else if (bytes_received == 0) { printf("服务器关闭了连接\n"); break; } else { perror("接收消息失败"); break; } } // 关闭套接字 close(client_socket); return 0; } 6 ./client 成功连接到服务器 127.0.0.1:8080 输入消息发送到服务器 (输入'quit'退出): 客户端> hello 服务器响应: word 客户端> quit 客户端退出... ➜ 6 nc -lvvp 8080 Listening on 0.0.0.0 8080 Connection received on localhost 46770 hello word

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号