双机通信-母女的秘密漫画

这个实验是在学C++一个月左右吧,反正就前几周,老师推荐做的,要实现的功能就是一个发送端一个接收端,先约定密钥,发送端加密文件发送,接收端接收文件解密,实现txt文件的加密收发。

记得有个接口问题很小的点,调了一周,那天下午三点多,当时都快要上课了,因为这个实验要两台电脑才能调嘛,也挺麻烦的,当时我是拿了室友的电脑,转念想到一个新想法,想着试一下,不行就关上电脑拿书准备去上课。当发送端显示发送成功(“transfer successfully!” ),然后在接收端一堆文件里找到了我要传输的内容,那种心情现在还记得。

因为老师当时就推荐了socket,easyx这两个名词,让我们自己去百度,前前后后得调了几个星期吧,主要代码是网上复制的(真不是没有怀疑过找的代码有问题,当时只找到这一份可靠性不错的代码),也是学到了很多东西。也是从这时真正对编程感兴趣的吧。

主要代码原链接好像404了......

PS:代码应该跑不了,我这粘贴的只是发送端的代码。

#源cpp

#define _WINSOCK_DEPRECATED_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <winsock2.h>#include<iostream>#include<cstdlib>#include"Windows.h"#include"功能函数.h"#include <cstdio> #include <vector>#include<string>#include<fstream>#pragma comment (lib, "ws2_32.lib")  //加载 ws2_32.dll#define BUF_SIZE 1024using namespace std;void writeFile(){int a;cout << "从data.txt文末开始编辑请按0,删除全部内容重新编辑请按1:";while (cin >> a){if (a == 0){cout << "\n请输入想要添加的内容,按两次回车键结束编辑\n";writeFile0();break;}if (a == 1){cout << "\n请输入想要添加的内容,按两次回车键结束编辑\n";writeFile1();break;}cout << "错误!请重新输入:";}}void main(){int choice;back:printInterface1();cin >> choice;system("cls");switch (choice){case 1://编辑文件writeFile();cout << "编辑成功!按0退出程序,按1返回开始界面:";int a;while (cin >> a){if (a == 0) break;if (a == 1){system("cls");goto back;}}break;case 2://查看文件cout << "明文:\n";checkFile();cout << "\n查看成功!按0退出程序,按1返回开始界面:";int b;while (cin >> b){if (b == 0) break;if (b == 1){system("cls");goto back;}}break;case 3://加密,传输文件again:cout << "请输入密钥:";int num, d;cin >> num;d = encryptFile(num);if (d == 0){goto back;}if (d == 1){cout << "等待接受中.....\n";send();}if (d == 2){goto again;system("cls");}case 0:system("cls");cout << "欢迎下次使用!";exit(0);}}

#功能函数.h

#define _WINSOCK_DEPRECATED_NO_WARNINGS#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<stdio.h>//对文件进行操作#include<fstream>//#include <cstdio> #include <vector>#include<string>#include <stdlib.h>#include <winsock2.h>#pragma comment (lib, "ws2_32.lib")  //加载 ws2_32.dll#define BUF_SIZE 1024using namespace std;void printInterface1(){cout << "&--------------------------------------&\n";cout << "|**************************************|\n";cout << "|*         欢迎使用双机通信           *|\n";cout << "|*                 主界面             *|\n";cout << "|*                                    *|\n";cout << "|*    编辑data.txt文件 ——— 1       *|\n";cout << "|*    查看data.txt文件 ——— 2       *|\n";cout << "|*    加密传输data.txt文件 — 3       *|\n";cout << "|*    退出双机通信程序 ——— 0       *|\n";cout << "|*                                    *|\n";cout << "|*                        --By BUPT   *|\n";cout << "|**************************************|\n";cout << "&--------------------------------------&\n";cout << "   请输入相应的功能键(数字):";}void writeFile0()//从文末编辑文件{fstream ofile;ofile.open("C:\\Cprograme\\idata.txt", ios::app);string str;vector<string> str_list;cin.ignore();while (getline(cin, str)){if (str.size() == 0)    break;str_list.push_back(str);}for (auto s : str_list){ofile << '\n';ofile << s;}ofile.close();}void writeFile1()//从开头编辑文件{fstream ofile;ofile.open("C:\\Cprograme\\idata.txt", ios::out);string str;vector<string> str_list;cin.ignore();while (getline(cin, str)){if (str.size() == 0)    break;//记得要这句,才能结束输入str_list.push_back(str);}for (auto s : str_list){ofile << '\n';ofile << s;}ofile.close();}void checkFile()//查看明文{fstream infile;infile.open("C:\\Cprograme\\idata.txt", ios::in);if (!infile.is_open()){cout << "读取文件失败" << endl;return;}char c;while ((c = infile.get()) != EOF){cout << c;}infile.close();}void send()//传输加密后的文件{//先检查文件是否存在const char *filename = "C:\\Cprograme\\data.txt";  //文件名FILE *fp = fopen(filename, "r+");  //以二进制方式打开文件if (fp == NULL) {printf("Cannot open file, press any key to exit!\n");system("pause");exit(0);}WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);SOCKET servSock = socket(AF_INET, SOCK_STREAM, 0);sockaddr_in sockAddr;memset(&sockAddr, 0, sizeof(sockAddr));sockAddr.sin_family = PF_INET;sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1");sockAddr.sin_port = htons(1234);bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR));listen(servSock, 20);SOCKADDR clntAddr;int nSize = sizeof(SOCKADDR);SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize);//循环发送数据,直到文件结尾char buffer[BUF_SIZE] = { 0 };  //缓冲区int nCount;while ((nCount = fread(buffer, 1, BUF_SIZE, fp)) > 0) {send(clntSock, buffer, nCount, 0);}shutdown(clntSock, SD_SEND);  //文件读取完毕,断开输出流,向客户端发送FIN包recv(clntSock, buffer, BUF_SIZE, 0);  //阻塞,等待客户端接收完毕fclose(fp);closesocket(clntSock);closesocket(servSock);WSACleanup();system("pause");}int encryptFile(const int num)//加密文件{ifstream infile("c://Cprograme//idata.txt");fstream ofile;ofile.open("C:\\Cprograme\\data.txt", ios::out);infile >> noskipws;cout << "\n暗文:\n";char a, b;while (infile >> a){if ((a >= 'a'&&a <= 'z') || (a >= 'A'&&a <= 'Z')){(a + 32) > 'z' ? b = a - 32 : b = a + 32;if (b == a - 32){b + num > 'Z' ? b = b + num - 26 : b = b + num;}if (b == a + 32){b + num > 'z' ? b = b + num - 26 : b = b + num;}}else b = a;cout << b;ofile << b;}cout << "\n加密成功!确定要发送以上内容吗?取消传输按0,确定传输按1,重新选择密钥按2:";int c;while (cin >> c){system("cls");if (c == 0){return 0;break;}if (c == 1){return 1;break;}if (c == 2){return 2;break;}cout << "\n输入的数字错误!请重新输入:";}ofile.close();}

TV动画《银砂糖师与黑妖精 第二季度》主视觉图公开,将于2023年7月播出。OP:中岛怜《サプライズ 》ED:东山奈央《door》
2023-05-27
[pixiv] 插画今日排行榜 2023年6月12日
2023-06-13
根据弘幸原作制作的TV动画《女友成堆》公开了正式PV,在这段PV中可以看到主人公向井直也和女主角们的关系。
2022-10-28
肛门是个比较“特殊”的部位,因为人体需要排便,通过它才能“有进有出”,但又因为隐私问题,大家对它的关注其实不多。肛门处于人体内的开放性结构部位,受内外环境因素影响,很容易出现异常状态,常见的就是肛门瘙痒问题。防范肛门瘙痒,首先我们要知道哪些因素可能引发这个问题:1、卫生因素肛门是一个特殊的人体部位,更应该注意做好肛门局部清洁工作,否则容易引发感染,出现肛门瘙痒症状。大便中含有人体内代谢出来的毒素成分,如果排便后没有做好肛门清洁工作,更容易出现残留物质,引发局部感染。同时肛门部位的皮肤含有较多的褶
2022-10-12
「Romi」Pure Media Vol.208 - Hot Date with His Girl [115P-178MB]
2023-05-26
(Cosplay) (C84) [Kaleidoscope, (bel.)] とある無職の衣装遊戯 (とある科学の超電磁砲)[226P201MB]
2022-01-07
兔子Zzz不吃胡萝卜 粉草回忆[21P-150MB]
2023-05-21
疯猫ss - 白毛衣+自拍[49P-549MB]
2021-05-28
【Lady Melamori】 Dehya [19P 34MB]
2023-05-28
【桜桃喵】私房校服黑丝(90P-760M)
2023-02-22