亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業社區

探索學習新天地,共享知識資源!

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
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號