您的位置:首页 > 运维架构 > Linux

基于linux socket 简单学生信息管理系统client程序

2012-01-02 00:48 906 查看
#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

#include<string.h>

#include<netdb.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<sys/socket.h>

//#include<conio.h>

#include<memory.h>

#define SERVPORT 3333

#define MAXDATASIZE 100

char recv_error_buf[20];

char slect_cmd;

char name2[20];

char cha;

char yorn;

struct student

{

char name[10];

int age;

int height;

char sex;

}send_stu,recv_stu;

struct cmd_data

{

char ch;

struct student stt;

}cmd;

typedef struct NODE

{

struct student std;

struct NODE *next;

}node;

char menu()

{ char cha;

system("cls");

printf("student management system!\n");

printf("\t\ti.insert student information:\n");

printf("\t\tp.output all students information:\n");

printf("\t\ts.serarch student information:\n");

printf("\t\td.delete student information:\n");

printf("\t\te.exit system:\n");

scanf("%c",&slect_cmd);

cha=slect_cmd;

// if(slect_cdm>0||slect_num<10)

return (cha);

}

struct student getstu()

{

struct student stu;

char name[10];

printf("please input name:\n");

scanf("%s",name);

strcpy(stu.name,name);

printf("please input age:\n");

scanf("%d",&stu.age);

printf("please input height:\n");

scanf("%d",&stu.height);

printf("please input sex:\n");

scanf("%c",&stu.sex);

scanf("%c",&stu.sex);

return(stu);

}

main(int argc ,char *argv[])

{node recv_from_s;

int sockfd,sendbytes,recvbytes;

char buf[MAXDATASIZE];

struct hostent *host;

struct sockaddr_in serv_addr;

if(argc<2)

{

fprintf(stderr ,"please enter the server's hostname!\n");

exit(1);

}

if((host=gethostbyname(argv[1]))==NULL)

{

perror("gethostbyname");

exit(1);

}

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

{

perror("socket");

exit(1);

}

serv_addr.sin_family=AF_INET;

serv_addr.sin_port=htons(3333);

serv_addr.sin_addr=*((struct in_addr *)host->h_addr);

bzero(&(serv_addr.sin_zero),8);

if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1)

{

perror("connect");

exit(1);

}

// memset(&send_stuv,0,sizeof(struct student));

while(1)

{

printf("student management system!\n");

printf("\t\ti.insert student information:\n");

printf("\t\tp.output all students information:\n");

printf("\t\ts.serarch student information:\n");

printf("\t\td.delete student information:\n");

printf("\t\te.exit system:\n");

// printf("please slect num:\n");

scanf("%c",&cha);

memset(&cmd,0,sizeof(struct cmd_data));

memset(&recv_from_s,0,sizeof(node));

// char scanf_ch=
menu();

switch(cha)

{

//insert_from_head

case 'i':send_stu=getstu();

cmd.ch='i';

strcpy(cmd.stt.name,send_stu.name);

cmd.stt.age=send_stu.age;

cmd.stt.height=send_stu.height;

cmd.stt.sex=send_stu.sex;

if((sendbytes=send(sockfd,&cmd,sizeof(struct cmd_data),0))==-1)

{

perror("send");

exit(1);

}

break;

//search_by_name

case 's':printf("please input name\n");

scanf("%s",name2);

cmd.ch='s';

strcpy(cmd.stt.name,name2);

if((sendbytes=send(sockfd,&cmd,sizeof(struct cmd_data),0))==-1)

{

perror("send");

exit(1);

}

if((recvbytes=recv(sockfd,&recv_from_s,sizeof(node),0))==-1)

{

perror("recv");

}

printf("%s\t\t%d\t%d\t%c\t\n",\

recv_from_s.std.name,recv_from_s.std.age,recv_from_s.std.height,recv_from_s.std.sex);

break;

//delete

case 'd':printf("please input name\n");

scanf("%s",name2);

printf("%s\n",name2);

strcpy(cmd.stt.name,name2);

cmd.ch='d';

// strcpy(cmd.stt.name,send_stu.name);

if((sendbytes=send(sockfd,&cmd,sizeof(struct cmd_data),0))==-1)

{

perror("send");

exit(1);

}

break;

case'p':cmd.ch='p';

if((sendbytes=send(sockfd,&cmd,sizeof(struct cmd_data),0))==-1)

{

perror("send");

}

printf("name\t\tage\theight\tsex\t\n");

do{

if((recvbytes=recv(sockfd,&recv_from_s,sizeof(node),0))==-1)

{

perror("recv");

}

printf("%s\t\t%d\t%d\t%c\t\n",\

recv_from_s.std.name,recv_from_s.std.age,recv_from_s.std.height,recv_from_s.std.sex);

}while((&recv_from_s)->next==NULL);

break;

case'e':exit(0);

// break;

default:break;

// exit(1);

// menu();

}

// if((recvbytes=recv(sockfd,&recv_error_buf,20,0))==-1)

// printf("%s\n",recv_error_buf);

}

/*

if((recvbytes=recv(sockfd,&recv_stu,sizeof(struct student),0))==-1)

{

perror("recv");

exit(1);

}

// clrscr();

system("cls");

printf("client:\n");

printf("name=%s\nage=%d\nheight=%d\nsex=%c\n",recv_stu.name,recv_stu.age,recv_stu.height,recv_stu.sex);

// send_stu=getstu();

// strcpy(send_buf,send_stu);

/*

if((recvbytes=recv(sockfd,&recv_stu,sizeof(struct student),0))==-1)

{

perror("recv");

exit(1);

}

*/

// printf("name=%s\nage=%d\nheight=%d\nsex=%c\n",recv_stu.name,recv_stu.age,recv_stu.height,recv_stu.sex);

/*

if((sendbytes=send(sockfd,&send_stu,sizeof(struct student),0))==-1)

{

perror("send");

exit(1);

}

*/

close(sockfd);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐