代码
来源:互联网 发布:wifi无线传输软件 编辑:程序博客网 时间:2024/05/20 19:48
<pre name="code" class="cpp">/*服务器*/#pragma comment (lib, "w2_32.lib")#include <stdio.h>#include <winsock2.h>#include <time.h>SOCKET clntSock;SOCKET servSock;struct tm * timeinfo;//上次调用时间获取函数后的时间char * TimeStr;//存储时间的字符串char Str_Recv[MAXBYTE] = {0};//定义一个键盘接收到的字符串数组char Str_Send[MAXBYTE] = {0};//定义一个键盘输入的字符串数组void TCP_Server(void);//建立连接void InterFace(void);//首界面void GetTime(boolean flag);//得到时间,选择是否打印已经存储void GetFromKey(void);//得到键盘信息void RecvPrint(void);//得到信息并打印void Func(void);//功能界面int main(){ char ch = 'Y'; InterFace(); TCP_Server(); while(ch != 'N') { fflush(stdin); Func();//服务器功能界面 scanf("%c",&ch); switch(ch) { case 'A': printf("Waiting for client's message...\n"); RecvPrint(); break; case 'B': printf("Waiting for the client ready to receive...\n"); recv(clntSock,Str_Recv,MAXBYTE,NULL); while(strcmp(Str_Recv,"Ready to receive") != 0);//得到的数据为准备好接收在进行发送后,退出循环 printf("Client is waiting\n"); GetFromKey(); send(clntSock, Str_Send, strlen(Str_Send)+sizeof(char), NULL); printf("\nSuccess to send message to client\n"); break; case 'C': printf("\n"); GetTime(0); break; case 'D': printf("Waiting for client's command...\n");//等待客户端的命令 recv(clntSock,Str_Recv,MAXBYTE,NULL);//得到命令 if(strcmp(Str_Recv,"Time") == 0) { GetTime(1); send(clntSock, TimeStr, strlen(TimeStr)+sizeof(char), NULL); printf("\nSuccess to send system's time to client\n"); } else if(strcmp(Str_Recv,"Alarm") == 0) printf("\a\a\nServer alarm...\n"); else { printf("Command error!\n"); } break; case 'E': system("CLS"); break; case 'N': break;default:printf("Enter Illigelly!\n");break; } fflush(stdin); } closesocket(clntSock); closesocket(servSock); WSACleanup(); return 0;}//************************************************************//输入参数:无//函数作用:得到客户消息,并打印出来//函数返回:无//************************************************************void RecvPrint(void){ recv(clntSock,Str_Recv,MAXBYTE,NULL); printf("\nMessage from client:%s\n",Str_Recv);}//************************************************************//输入参数:无//函数作用:用户初始界面//函数返回:无//************************************************************void InterFace(void){ printf("\nAuthor:Song Chaochao\n"); printf("Version:1.0\n"); GetTime(0); printf("\n************************ Server *************************\n");}//************************************************************//输入参数:无//函数作用:服务器功能界面//函数返回:无//************************************************************void Func(void){ printf("\n* * * * * * * * * * * * * * * *\n"); printf("**** Menu ****\n"); printf("* * * * * * * * * * * * * * * *\n"); printf("* A:Receive *\n"); printf("* B:Send *\n"); printf("* C:Get system's time *\n"); printf("* D:Get command *\n"); printf("* E:Clear screen *\n"); printf("* N:Quit *\n"); printf("* Please enter leter! *\n"); printf("* * * * * * * * * * * * * * * *\n");}//************************************************************//输入参数:输入flag = 1:输出成功存储;flag = 0;不输出成功存储//函数作用:得到系统时间,存放在结构体timeinfo中,// 并将时间字符串存放在TimeStr中//函数返回:无//************************************************************void GetTime(boolean flag){ time_t rawtime; time ( &rawtime ); timeinfo = localtime ( &rawtime ); printf ( "\007Date/Time: %s", TimeStr = asctime (timeinfo) ); if(flag == 1) printf("Succes to save time into char * TimeStr\n");}//************************************************************//输入参数:无//函数作用:建立套接字,准备和客户端连接//函数返回:无//************************************************************void TCP_Server(void){ //初始化 DLL WSADATA wsaData; //设置winsock版本号 WSAStartup( MAKEWORD(2, 2), &wsaData); //创建套接字 servSock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);//AF_INET,代表internet 地址族;SOCK_STREAM代表TCP;IPPROTO_IP=0,目前无用 //绑定套接字 struct sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充 sockAddr.sin_family = AF_INET; sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //具体的IP地址 //16位端口号 sockAddr.sin_port = htons(1234); //servSock是由socket()调用返回的并且未作连接的套接字描述符(套接字号),将其与本地地址连接 bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); //打印等待客户 printf("Waiting for client...\n"); //进入监听状态 listen(servSock, 20);//等待连接的最大队列长度20 //接收客户端请求 SOCKADDR clntAddr; int nSize = sizeof(SOCKADDR); clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize); printf("\nSuccess to connect...\n\n"); //向客户端发送数据 char *str = "\nSuccess to connect...\n"; send(clntSock, str, strlen(str)+sizeof(char), NULL);}//************************************************************//输入参数:无//函数作用:从键盘得到信息,存放在数组STR//函数返回:无//************************************************************void GetFromKey(void){ fflush(stdin);//输入前清除回车等 printf("Please enter your massage:"); gets(Str_Send);//得到要发送的字符串}
/*客户端*/#include <stdio.h>#include <stdlib.h>#include <WinSock2.h>#pragma comment(lib, "ws2_32.lib") //加载 ws2_32.dll#define TXTSTR_MAX 100#define TIME_MAX 50char TimeStr[TIME_MAX];//存储时间的字符串char *TimeSave;//用来存储不显示的时间字符串char Str_Recv[MAXBYTE] = {0};//定义一个键盘接收到的字符串数组char Str_Send[MAXBYTE] = {0};//定义一个键盘输入的字符串数组char *TXTSTR = {0};//存放读出txt的数据char filename[FILENAME_MAX] = "PROCESS.txt";SOCKET servSock;SOCKET sock;void GetTime(boolean flag);//提取时间void InterFace(void);//首界面void Func(void);//功能界面void TCP_Client(void);//套接字的初始化和连接void RecvPrint(void);//接收并打印void TxtWrite(char *address,char *TxtStr1,char *TxtStr2,char *TxtStr3,char *TxtStr4);//文件写操作void TxtPrintf(char *address);//文件读操作void GetFromKey(void);//得到键盘发过来的信息int main(){ char ch = 'Y';//除了ch=‘N’之外,都继续运行 char *str; InterFace(); TCP_Client(); Func(); scanf("%c",&ch);//第一次得到命令 while(ch != 'N') { switch(ch) { case 'A': GetFromKey(); send(sock,Str_Send,strlen(Str_Send)+sizeof(char), NULL); printf("\nSuccess to send your message!\n"); GetTime(0); TxtWrite(filename,"\nSend message to Server:",Str_Send,"\n",TimeSave); break; case 'B': str = "Ready to receive"; send(sock,str,strlen(str)+sizeof(char), NULL); printf("waiting for message...\n"); RecvPrint(); GetTime(0); TxtWrite(filename,"\nReiceve message from server:",Str_Recv,"\n",TimeSave); break; case 'C': GetTime(1); TxtWrite(filename,"Get system's Time:",TimeSave,"",TimeSave); break; case 'D': str = "Time"; send(sock,str,strlen(str)+sizeof(char), NULL); recv(sock, TimeStr, MAXBYTE, NULL); printf("\nServer time is:%s\n\n",TimeStr); GetTime(0); TxtWrite(filename,"Get Server's Time:",TimeStr,"",TimeSave); break; case 'E': str = "Alarm"; send(sock,str,strlen(str)+sizeof(char), NULL); printf("\nSuccess to make server alarm!\n\n",TimeStr); GetTime(0); TxtWrite(filename,"Make server alarm","","\n",TimeSave); break; case 'F': TxtPrintf(filename); break; case 'G': system("CLS"); break; case 'N': printf("\a\n\nQuit\n\n"); return 0; default: printf("Enter Illigelly!\n\a"); break; } fflush(stdin); Func(); scanf("%c",&ch); } //关闭套接字 closesocket(sock); //终止使用 DLL WSACleanup(); system("pause"); return 0;}//************************************************************//输入参数:flag = 0:不打印时间;flag = 1:打印时间//函数作用:得到本系统的时间//函数返回:无//************************************************************void GetTime(boolean flag){ time_t rawtime; struct tm * timeinfo; time ( &rawtime ); timeinfo = localtime ( &rawtime ); TimeSave = asctime (timeinfo); if(flag == 1) printf ( "\007Date/Time: %s", asctime (timeinfo) );}//************************************************************//输入参数:无//函数作用:客户端初始化界面//函数返回:无//************************************************************void InterFace(void){ printf("\nAuthor:Song Chaochao\n"); printf("Version:1.0\n"); GetTime(1); printf("\n************************ Client *************************\n");}//************************************************************//输入参数:无//函数作用:客户端功能界面//函数返回:无//************************************************************void Func(void){ printf("\n* * * * * * * * * * * * * * * *\n"); printf(" **** Menu ****\n"); printf("* * * * * * * * * * * * * * * *\n"); printf("* A:Send *\n"); printf("* B:Reiceve *\n"); printf("* C:Get system's time *\n"); printf("* D:Get server's time *\n"); printf("* E:Server alarms *\n"); printf("* F:Previous step *\n"); printf("* G:Clear screen *\n"); printf("* N:Quit *\n"); printf("* Please enter leter! *\n"); printf("* * * * * * * * * * * * * * * *\n");}//************************************************************//输入参数:无//函数作用:建立套接字//函数返回:无//************************************************************void TCP_Client(void){ //初始化DLL WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); //创建套接字 sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //向服务器发起请求 SOCKADDR_IN sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); //每个字节都用0填充 sockAddr.sin_family = AF_INET; sockAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); sockAddr.sin_port = htons(1234); int nSize = sizeof(SOCKADDR); servSock = connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); recv(sock, Str_Recv, MAXBYTE, NULL); printf("Message form server: %s\n", Str_Recv);}//************************************************************//输入参数:无//函数作用:接收来自服务器的信息,并打印出来//函数返回:无//************************************************************void RecvPrint(void){ //接收服务器传回的数据 recv(sock, Str_Recv, MAXBYTE, NULL); printf("Message form server: %s\n", Str_Recv);}//************************************************************//输入参数:文件名和要输入的内容//函数作用:输入操作内容到txt文件//函数返回:无//************************************************************void TxtWrite(char *address,char *TxtStr1,char *TxtStr2,char *TxtStr3,char *TxtStr4){ FILE* fp;fp = fopen(address,"w"); // 打开文件,地址report.txtif(fp == NULL){printf("cannot open this file\n"); //不能打开文件exit(0);} fprintf(fp,TxtStr1); fprintf(fp,TxtStr2); fprintf(fp,TxtStr3); fprintf(fp,TxtStr4); fclose(fp);}//************************************************************//输入参数:文件名//函数作用:输出文件的内容//函数返回:无//************************************************************void TxtPrintf(char *address){FILE* fp;fp = fopen(address,"r"); // 打开文件,地址sample.txtif(fp == NULL){printf("cannot open this file\n"); //不能打开文件exit(0);}printf("\nThe previous step:\n");while(!feof(fp)) putchar(fgetc(fp));fclose(fp); //关闭文件}//************************************************************//输入参数:无//函数作用:从键盘得到信息,存放在数组STR//函数返回:无//************************************************************void GetFromKey(void){ fflush(stdin);//输入前清除回车等 printf("Please enter your massage:"); gets(Str_Send);//得到要发送的字符串}
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">
0 0
- 代码
- 代码!
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- 代码
- Dynamic Entity Representation with Max-pooling Improves Machine Reading
- CentOS联网
- c++使用curl库发送https请求
- xcode8注释快捷键
- deviceTree中reg指令的一点理解
- 代码
- Python 集合
- 匿名类——参数匿名类的应用
- 几种字符串查找方法
- 【Linux 内核网络协议栈源码剖析】bind 函数剖析
- 明明添加引用了,但还是提示:未能找到类型或命名空间名称xxx,这是怎么回事?
- Java集合干货系列-集合总体大纲
- 欢迎使用CSDN-markdown编辑器
- 【JZOJ4820】最大化