TCP/IP网络编程_计算器服务器端客户端

//服务器端代码:

#include 
#include 
#include 
#include 
#include 
#include 

void error_handling(const char *msg)
{
	fputs(msg,stderr);
	exit(1);
}
int calc(int n,int *digs,char op)
{
	int res1=0;
	int res2=1;
	switch(op)
	{
		case '+':
			for(int i=0;i",argv[0]);
		exit(1);
	}
	serv_sock=socket(PF_INET,SOCK_STREAM,0);	//第一步
	if(serv_sock==-1)
		error_handling("socket() error\n");
		
	memset(&serv_adr,0,sizeof(serv_adr));
	serv_adr.sin_family=AF_INET;
	serv_adr.sin_addr.s_addr=htonl(INADDR_ANY);
	serv_adr.sin_port=htons(atoi(argv[1]));
	
	if(bind(serv_sock,(struct sockaddr*)&serv_adr,sizeof(serv_adr))==-1)	//第二步
		error_handling("bind() error\n");
	if(listen(serv_sock,5)==-1)
		error_handling("listen() error\n");
		
	for(int i=0;i<5;++i)
	{
		clnt_adr_sz=sizeof(clnt_adr);
		clnt_sock=accept(serv_sock,(struct sockaddr*)&clnt_adr,&clnt_adr_sz);	//第三步
		if(clnt_sock==-1)
			error_handling("accept() error\n");
		printf("Connected %d......\n",i+1);
		read(clnt_sock,&opd,1);	//读取第一个字节,因为opd是int类型,会发生自动char->int转换
		for(int k=0;k


//客户端代码:

#include 
#include 
#include 
#include 
#include 
#include 
#define MAXN 1024
#define OPSZ 4	
void error_handling(const char *message)
{
	fputs(message,stderr);
	fputc('\n',stderr);
	exit(1);
}
int main(int argc,char *argv[])
{
	int clnt_sock;
	struct sockaddr_in serv_adr;
	char msg[MAXN];
	int opd,result;
	if(argc!=3)
	{
		printf("Usage %s  ",argv[0]);
		exit(1);
	}
	clnt_sock=socket(PF_INET,SOCK_STREAM,0);	//第一步
	if(clnt_sock==-1)
		error_handling("socket() error");
	
	memset(&serv_adr,0,sizeof(serv_adr));		//填充要连接的服务器端的地址
	serv_adr.sin_family=AF_INET;
	serv_adr.sin_addr.s_addr=inet_addr(argv[1]);
	serv_adr.sin_port=htons(atoi(argv[2]));
	
	if(connect(clnt_sock,(struct sockaddr*)&serv_adr,sizeof(serv_adr))==-1)
		error_handling("connect() error");
	else
		printf("connected...\n");	//成功连接之后
	printf("Operand count:");
	scanf("%d",&opd);
	msg[0]=(char)opd;	//强制类型转换
	for(int i=0;i


你可能感兴趣的:(TCP/IP网络编程)