当前位置:  技术问答>linux和unix

liunx 套接字编程 数据写入文件问题

    来源: 互联网  发布时间:2016-06-23

    本文导语:  服务器 #include  #include  #include  #include  #include  #include  #include  #include  #define SERVERPORT 7788 #define BACKLOG 10 typedef struct user { char u_name[20]; char u_pwd[16]; }USER; typedef struct Reg { int ncount;     // 有多少用户 ...

服务器

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

#define SERVERPORT 7788
#define BACKLOG 10


typedef struct user
{
char u_name[20];
char u_pwd[16];

}USER;

typedef struct Reg
{
int ncount;     // 有多少用户
USER usr[1024]; //最大用户人数

}REGISTER;


int regi(char type_ch[]);
int Login(char type_ch[]);
char type_ch[36]={''}; //保存客户端发送过来的用户信息




int main(void)
{
int sockfd, client_fd,flag;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
char buf[30]={''};
char cmd[BACKLOG]={''};
int sin_size,recvtype,type;
USER users;


if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("Socket:");
exit(1);
}

my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(SERVERPORT);
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(my_addr.sin_zero), 8);

if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
{
perror("Bind:");
exit(1);
}

if(listen(sockfd, BACKLOG) == -1)
{
perror("Listen:");
exit(1);
}

while(1)
{
sin_size = sizeof(struct sockaddr_in);

if((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1)
{
perror("Accept:");
exit(1);
}

printf("Received a connection from %sn", inet_ntoa(remote_addr.sin_addr));

/* if(send(client_fd, cmd,strlen(cmd),0) ==  -1)
{
perror("Send:");

*/
if(!fork())
{
if( (recvtype = recv(client_fd, cmd,BACKLOG,0)) == -1 )
{
perror("recv");
}
cmd[recvtype]='';
printf("%s",cmd);
if( strcmp(cmd,"rege") == 0 )
{
printf("命令接受成功n");
if(type =recv(client_fd,type_ch,36,0) == -1)
{
}
// users = split(type_ch); //拆分
flag = regi(type_ch);
}
else if( strcmp(cmd,"login") == 0)
{
printf("命令接受成功n");
if(type =recv(client_fd,type_ch,36,0) == -1)
{
}
type_ch[type]='';

// users = split(type_ch);
flag = Login(type_ch);
}else
{
printf("命令错误 n");
}

close(client_fd);
}
close(client_fd);
}
}


int regi(char type_ch[]) //注册
{

FILE *rfp,*ufp;
int i,j,flag = 1;
REGISTER regd;
regd.ncount=0;
USER file_usr,usr;
for(i=0,j=0; type_ch[i] != ''; i++)
{
if(flag)
    {
usr.u_name[i] = type_ch[i];
if(type_ch[i] == ' ' )
{
flag=0;
usr.u_name[i] ='';
}
}
else
{
usr.u_pwd[j] = type_ch[i];
j++;
}
}

rfp = fopen("user.txt" , "r+");
ufp = fopen("reg.txt", "w+");
if( rfp == NULL)
{
write(rfp, usr,sizeof(usr));
regd.ncount++;
write(ufp,regd,sizeof(regd));
printf(" 帐号密码写入成功n");
close(rfp);
close(ufp);
return 1;
}
else while( !feof(rfp) )
{
read(rfp,file_usr,20);
if(strcmp(file_usr.u_name,usr.u_name) == 0)
{
printf("用户已经存在n");
close(rfp);
close(ufp);
return 0;
}

}

regd.ncount++;
write(rfp,usr,sizeof(usr));
write(ufp, regd,sizeof(regd));
printf("帐号写入成功");
close(rfp);
close(ufp);
return 1;
}


int Login(char type_ch[]) //登陆
{

FILE *rfd, *ufd;
int i ,j,flag =1;
REGISTER reg;
USER usr;
for(i=0,j=0; type_ch[i] != ''; i++)
{
if(flag)
    {
usr.u_name[i] = type_ch[i];
if(type_ch[i] != ' ' )
{
flag=0;
}
}
else 
{
usr.u_pwd[j]=type_ch[i];
j++;
}
}
rfd =fopen("reg.txt", "w+");
ufd = fopen("user.txt","r+");

if(rfd == NULL || ufd == NULL)
{
perror("Cann't find the user information!!");
return 0;
}

if( !feof(rfd) )
{
fscanf(rfd,"%d",®.ncount); 
}

fclose(rfd);

for( i = 0; i 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 用宽带路由器上网;liunx与unix的区别
  • liunx下配置axis2的环境变量怎么配置
  • 有关liunx启动的问题?在线等待!!!
  • 请问我么再LIUNX下开发JAVA,应该看些什么书。和什么技术。
  • 急寻dell(latitude D500)笔记本安装liunx的问题
  • 关于在2000下装RH LIUNX的问题
  • 在liunx 下 怎么上网?
  • RED HAT LIUNX的安装!
  • 哪位高手知道java怎么执行liunx的命令?
  • 很简单的问题!liunx的.sh文件是什么?怎么创建啊!
  • 送分了.学liunx系统管理好找工作?
  • 求教:LIUNX 学开发还是学主机维护。。??
  • 求帮助!我的red hat liunx 9.0 进不了桌面了
  • eclipse 连接Liunx CVS问题 !高人救命啊!
  • 由于在win2k多更改了分区,结果,我的liunx进不去了,有没有方法补救?
  • liunx如何杀毒?
  • liunx分去疑问
  • 在liunx系统上跑程序,几个小时后系统死机,而cpu不狂涨,也无内存泄露
  • 把liunx 2005桌面型操作系统干掉,XP启动不起来啦
  • Liunx小问题!!!在线等


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3