資源簡介
西電網信院信息安全專業——網絡程序設計大作業——設計一個類似于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
評論
共有 條評論