资源简介
西电网信院信息安全专业——网络程序设计大作业——设计一个类似于QQ/MSN的聊天软件
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define len 4096
char username[17] = {0};
char password[17] = {0};
int ctrl = 1;
int ctrl1 = 0;
int ctrl2 = 1;
int user_register(int);
int user_login(int);
void read_loop(void *);//
int send_message(int);
int send_file(int);
int accept_file(int);//
int file_size(char *);//
void duandian();//
int main(){
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
memset(servaddr.sin_zero 0 sizeof(servaddr.sin_zero));
if(inet_aton(“127.0.0.1“ &servaddr.sin_addr) == -1){
perror(“iner_aton“);
exit(1);
}
int sockfd = socket(AF_INET SOCK_STREAM 0);
if(sockfd == -1){
perror(“socket“);
exit(1);
}
if(connect(sockfd (struct sockaddr *)&servaddr sizeof(servaddr)) == -1){
perror(“connect“);
exit(1);
}
int x;
char buf[len];
while(1){
printf(“清选择 1.登陆 2.注册\n“);
scanf(“%d“ &x);
if(x == 2){
user_register(sockfd);
continue;
}
else if(x != 1 && x != 2){
printf(“请重新输入数字\n“);
continue;
}
if(user_login(sockfd))
break;
}
pthread_t thread;
if(pthread_create(&thread NULL (void *)read_loop (void *)&sockfd) != 0)
printf(“线程创建失败\n“);
while(1){
printf(“请选择 1.发信息 2.发文件\n“);
scanf(“%d“ &ctrl2);
while(ctrl == 2) {
continue;
}
if(ctrl2 == 1){
send_message(sockfd);
}else if(ctrl2 == 2){
send_file(sockfd);
}else if(ctrl2 != 3 || ctrl2 != 4){
printf(“请重新输入数字\n“);
continue;
}
}
return 0;
}
int user_register(int fd){
int length;
char account[len] = {0};
char feedback[len] = {0};
printf(“请输入由6~16位小写英文或数字组成的用户名\n“);
scanf(“%s“ username);
length = strlen(username);
for(int i = length; i < 16; i++){
strcat(username “ “);
}
printf(“请输入由6~16位小写英文或数字组成的密码\n“);
scanf(“%s“ password);
length = strlen(password);
for(int i = length; i < 16; i++){
strcat(password “ “);
}
strcpy(account “register “);
strcat(account username);
strcat(account password);
write(fd account len);
read(fd feedback len);
printf(“%s\n“ feedback);
if(!strcmp(feedback “注册成功“))
return 1;
else
user_register(fd);
return 0;
}
int user_login(int fd){
int length;
char account[len] = {0};
char feedback[len] = {0};
char tem[len] = {0};
printf(“请输入用户名\n“);
scanf(“%s“ username);
length = strlen(username);
for(int i = length; i < 16; i++){
strcat(username “
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-09 23:39 1618012+1618011班-16180120012(1618012000116180110110)\
文件 382043 2018-12-09 23:39 1618012+1618011班-16180120012(1618012000116180110110)\1618012+1618011班-16180120012(1618012000116180110110).docx
文件 570191 2018-12-09 23:37 1618012+1618011班-16180120012(1618012000116180110110)\1618012+1618011班-16180120012(1618012000116180110110).pdf
目录 0 2018-12-09 18:13 1618012+1618011班-16180120012(1618012000116180110110)\已编译的文件\
文件 18064 2018-12-09 00:36 1618012+1618011班-16180120012(1618012000116180110110)\已编译的文件\client
文件 22184 2018-12-09 00:35 1618012+1618011班-16180120012(1618012000116180110110)\已编译的文件\server
目录 0 2018-12-09 22:39 1618012+1618011班-16180120012(1618012000116180110110)\源文件\
文件 8339 2018-12-09 16:44 1618012+1618011班-16180120012(1618012000116180110110)\源文件\client.c
文件 13386 2018-12-09 22:39 1618012+1618011班-16180120012(1618012000116180110110)\源文件\server.c
评论
共有 条评论