📄 main_fun.c
字号:
#include "commonclass.h"/*-----------------------------------------------------------------------------------------------------*//*主函数,开始就创建个SOCKET*/int Main_Fun(){ //创建共享内存 Init_Memory(); /*--------------------------------*/ //变量声明 int client_sockfd,client_len; struct sockaddr_in client_address; pid_t pid; /*--------------------------------*/ //创建监听的socket if( ! (SOCKFD = Init_Socket(PORT, IP)) ) { printf("INIT SOCKET FAILED!"); exit(0); } //创建连接队列 if( listen(SOCKFD, 10) != 0 ) { printf("SOCKFD LINSTEN FAIL!\n"); exit(0); } while(1) { client_len = sizeof(client_address); //接受连接 if( (CMD_SOCKFD = Accept_Connect(SOCKFD, &client_address)) == 0) { continue; } pid = fork(); switch(pid) { case -1: perror("FORK FAIL!\n"); exit(-1); case 0: //处理登录信息函数,用子进程进行处理 User_Login(); default: //主进程一直监听 continue; } } return 1;}/*-----------------------------------------------------------------------------------------------------*//*处理登录信息*/void User_Login(){ /*--------------------------------*/ //变量声明 int recv_state; int cmd_state; char recv_buf[100]; char send_msg[100]; char buf[100]; char command[5]; /*--------------------------------*/ //发送信息给客户端,提示连接成功 Send_Message(CMD_SOCKFD, "220 连接成功\r\n", 14); //一直等待客户端发送来的命令 while(1) { cmd_state = 0; memset(buf, 0, 100); memset(send_msg, 0, 100); recv_state = Recv_Message(CMD_SOCKFD, buf, 100); buf[strlen(buf) -2] = '\0'; switch(recv_state) { case 0: break; case -1: break; default: { if ( ! strncmp("USER", buf, 4) ) cmd_state = Cmd_USER(buf, send_msg); else if ( ! strncmp("PASS", buf, 4) ) cmd_state = Cmd_PASS(buf, send_msg); else if ( ! strncmp("SYST", buf, 4) ) cmd_state = Cmd_SYST(buf, send_msg); else if ( ! strncmp("FEAT", buf, 4) ) cmd_state = Cmd_FEAT(buf, send_msg); else if ( ! strncmp("REST", buf, 4) ) cmd_state = Cmd_REST(buf, send_msg); else if ( ! strncmp("TYPE", buf, 4) ) cmd_state = Cmd_TYPE(buf, send_msg); else if ( ! strncmp("PASV", buf, 4) ) cmd_state = Cmd_PASV(buf, send_msg); else if ( ! strncmp("LIST", buf, 4) ) cmd_state = Cmd_LIST(buf, send_msg); else if ( ! strncmp("NLST", buf, 4) ) cmd_state = Cmd_LIST(buf, send_msg); else if ( ! strncmp("QUIT", buf, 4) ) cmd_state = Cmd_QUIT(buf, send_msg); else if ( ! strncmp("DELE", buf, 4) ) cmd_state = Cmd_DELE(buf, send_msg); else if ( ! strncmp("NOOP", buf, 4) ) cmd_state = Cmd_NOOP(buf, send_msg); else if ( ! strncmp("CDUP", buf, 4) ) cmd_state = Cmd_CDUP(buf, send_msg); else if ( ! strncmp("RNFR", buf, 4) ) cmd_state = Cmd_RNFR(buf, send_msg); else if ( ! strncmp("RNTO", buf, 4) ) cmd_state = Cmd_RNTO(buf, send_msg); else if ( ! strncmp("RETR", buf, 4) ) cmd_state = Cmd_RETR(buf, send_msg); else if ( ! strncmp("STOR", buf, 4) ) cmd_state = Cmd_STOR(buf, send_msg); else if ( ! strncmp("APPE", buf, 4) ) cmd_state = Cmd_APPE(buf, send_msg); else if ( ! strncmp("PORT", buf, 4) ) cmd_state = Cmd_PORT(buf, send_msg); else if ( ! strncmp("HELP", buf, 4) ) cmd_state = Cmd_HELP(buf, send_msg); else if ( ! strncmp("SIZE", buf, 4) ) cmd_state = Cmd_SIZE(buf, send_msg); else if ( ! strncmp("STAT", buf, 4) ) cmd_state = Cmd_STAT(buf, send_msg); else if ( ! strncmp("ABOR", buf, 4) ) cmd_state = Cmd_ABOR(buf, send_msg); else if ( ! strncmp("PWD", buf, 3) ) cmd_state = Cmd_PWD(buf, send_msg); else if ( ! strncmp("MKD", buf, 3) ) cmd_state = Cmd_MKD(buf, send_msg); else if ( ! strncmp("RMD", buf, 3) ) cmd_state = Cmd_RMD(buf, send_msg); else if ( ! strncmp("CWD", buf, 3) ) cmd_state = Cmd_CWD(buf, send_msg); else if ( ! strncmp("XPWD", buf, 4) ) cmd_state = Cmd_PWD(buf, send_msg); else if ( ! strncmp("XMKD", buf, 4) ) cmd_state = Cmd_MKD(buf, send_msg); else if ( ! strncmp("XRMD", buf, 4) ) cmd_state = Cmd_RMD(buf, send_msg); else if ( ! strncmp("XCWD", buf, 4) ) cmd_state = Cmd_CWD(buf, send_msg); else cmd_state = Cmd_FEAT(buf, send_msg); /*把命令的返回内容报给客户端*/ if ( cmd_state == 1 ) { Send_Message(CMD_SOCKFD, send_msg, strlen(send_msg)); continue; } } } } close(CMD_SOCKFD); exit(0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -