基于linux或windows的c/s的循环服务器求一元二次方程的根
Posted unknowcry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于linux或windows的c/s的循环服务器求一元二次方程的根相关的知识,希望对你有一定的参考价值。
在linux和windows上实现
c/s模式
socket循环服务器求解一元二次方程的根
ax^2+bx+c=0
根据上式,客户端发送a,b,c给服务器,返回求解的根
暂未考虑非法数据等问题
linux:
tcpclient.cpp
1 #include<iostream> 2 #include <unistd.h> 3 #include<sys/types.h> 4 #include<sys/socket.h> 5 #include<netdb.h> 6 #include<arpa/inet.h> 7 #include<cstring> 8 #include<sstream> 9 10 using namespace std; 11 12 #define BUFSIZE 512 13 14 // #define SERVERIP "192.168.41.32" 15 // #define SERVERPORT 4140 16 17 /*error report*/ 18 static void bail(const char *on_what){ 19 fputs(strerror(errno), stderr); 20 fputs(": ", stderr); 21 fputs(on_what, stderr); 22 fputc(‘ ‘, stderr); 23 exit(1); 24 } 25 26 void getarg(int argc,char* argv[],const char** SERVERIP,int* SERVERPORT) 27 { 28 for(int i=0;i<argc;i++) 29 { 30 istringstream iss(argv[i]); 31 string str; 32 iss>>str; 33 if(str=="ip") 34 { 35 *SERVERIP=argv[i+1]; 36 } 37 else if(str=="port") 38 { 39 istringstream sts(argv[i+1]); 40 string s_port; 41 sts>>s_port; 42 *SERVERPORT=stoi(s_port); 43 } 44 else 45 { 46 47 } 48 49 } 50 } 51 52 int main(int argc,char* argv[]) 53 { 54 const char* SERVERIP="192.168.41.32"; 55 int SERVERPORT=4140; 56 57 getarg(argc,argv,&SERVERIP,&SERVERPORT); 58 59 int sockfd; 60 struct sockaddr_in server_addr; 61 const char* sendbuf = (char*)"hello,this is client"; 62 char recvbuf[BUFSIZE]; 63 64 //create socket 65 if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) <0)//创建套接字描述符 66 { 67 fprintf(stderr,"Socket error %s ",strerror(errno)); 68 exit(-1); 69 } 70 71 memset(&server_addr, 0,sizeof(server_addr)); 72 server_addr.sin_family = AF_INET; 73 server_addr.sin_port = htons(SERVERPORT); 74 server_addr.sin_addr.s_addr = inet_addr(SERVERIP); 75 76 if ((connect(sockfd, (struct sockaddr*) & server_addr, sizeof(struct sockaddr))) < 0)//连接远程对等实体 77 { 78 fprintf(stderr,"connect error %s ",strerror(errno)); 79 exit(-1); 80 } 81 82 if ((send(sockfd, sendbuf, strlen(sendbuf), 0)) != strlen(sendbuf))//发送数据 83 { 84 fprintf(stderr,"send error %s ",strerror(errno)); 85 exit(-1); 86 } 87 88 memset(recvbuf,‘