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

接收不到client 发送过来的数据求解

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

    本文导语:  //运行方式:server 8888 #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  int fp; char client_user[20],file_user[20]; void regi(int new_fd) //注册 { read(new_fd,client_user,20); fp = open("user.txt" , O_R...

//运行方式:server 8888
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int fp;
char client_user[20],file_user[20];

void regi(int new_fd) //注册
{
read(new_fd,client_user,20);
fp = open("user.txt" , O_RDWR | O_APPEND);
while(fp != EOF)
{
write(fp, file_user,20);
if(strcmp(file_user,client_user) == 0)
{
printf("用户已经存在n");
}
}
write(fp,client_user,strlen(client_user));

}
void login(int new_fd)
{
read(new_fd,client_user,20);
fp = open("user.txt" ,  O_RDWR | O_APPEND);

if(client_user ==NULL)
{
printf("用户信息获取失败!.......n");
}
while(fp != EOF)
{
read(fp, file_user, 20);
if(strcmp(file_user,client_user) == 0)
{
printf("用户登陆成功");
}

}
if(strcmp(file_user,client_user) != 0)
{
printf("没有这个用户");
exit(1);
}
}

void server(int portnumber)
{
int sockfd,new_fd;
    struct sockaddr_in server_addr;
     struct sockaddr_in client_addr;
char ch[2]="1";
int i;
int sin_size;
pi

if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "Socket error: %sn", strerror(errno));
exit(1);
}


bzero(&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(portnumber);


if(bind(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr_in)) == -1)
{
fprintf(stderr, "Bind error: %sn", strerror(errno));
exit(1);
}


if(listen(sockfd, 5) == -1)
{
fprintf(stderr, "Listen error: %sn", strerror(errno));
exit(1);
}


while(1)
{
sin_size = sizeof(struct sockaddr_in);
if((new_fd = accept(sockfd, (struct sockaddr *)(&client_addr), &sin_size)) == -1)
{
fprintf(stderr, "Accept error: %sn", strerror(errno));
exit(1);
}
fprintf(stderr, "Server get connection from %sn", inet_ntoa(client_addr.sin_addr));


read(new_fd, ch, 2,0);
i = atoi(ch);
switch(i)
{

case 1: regi(new_fd);   continue;
case 2: login(new_fd ); continue;
}

close(new_fd);
}

close(sockfd);
}
int main(int argc, char *argv[])
{

int portnumber;
if(argc != 2)
{
fprintf(stderr, "Usage: %s portnumbern", argv[0]);
exit(1);
}

if((portnumber = atoi(argv[1])) 

    
 
 

您可能感兴趣的文章:

  • 【请教】read()返回的字节数远远小于write()返回的字节数,接收数据不完整。虚心求解
  • socket发送端、接收端同一机器,kill掉接收端进程,发送端也被kill?
  • postfix 在内网可以正常接收与发送邮件,但向局外,不能接收与发送
  • sendmail,内部发送接收可以,当用外部的域名,无法发送和接收,如163账号。
  • 红外设备发送接收程序设计
  • 怎么实现Windows和Linux之间数据的接收发送
  • 求助,udp文件传输发送端发送完了,接收端却接受到一半就bad address?
  • ******JAVA手机或PDA发送,接收短消息******
  • linux 如何接收发送邮件?
  • Linux下的Qmail、Sendmail是怎样来判断邮件发送和接收。
  • getsockopt每次得到的socket的接收发送缓冲怎么都不一样
  • 请问linux下socket编程服务器数据只能发送不能接收吗?
  • 串口发送数据 网口接收数据 发送一个10个字节数组接收不到
  • 请教,socket中recv不能一次完全接收send发送的字节数?
  • 关于socket下的发送和接收缓冲区的问题
  • 100分求linux下串口调试工具,要可以发送、接收十六进制
  • sendmail配置好了,发送、接收都没有报错,问题是邮件不知道飞到哪里去了???
  • UDP协议在实现时有没有在发送端或者接收端设置缓冲区?
  • Linux 串口发送接收数据问题
  • 设计一个嵌入式透明网关,从eth0接收到的数据发送到eth1,从eth0接收到的数据转发到eth1,用原始套接字做的,但是eth0接收到eth1的数据又发给了eth1,这样在两者之间形成循环,怎么办?
  • 终于可以用JAVA支持手机短信发送、接收了,高兴散粉!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何知道接收到的广播包是从哪个网络端口接收到的?
  • recv 接收 ,接收空间不够大, 可以通过什么知道?
  • 发出SIGUSR1命令后,接收进程怎样定义接收后的动作
  • 在装有uclinux板中,怎么读取红外线接收器 接收到的数据
  • 如何判断包已经接收完?
  • socket 接收数据问题
  • 如果测试开发板每秒接收到的最大数据量?
  • 如何让程序接收底层数据?
  • 关于串口接收的问题,一直很疑惑……
  • Linux下怎么用socket接收zip文件流?怎么把zip文件读成流?
  • 请问如何清除UDP接收缓存?????????????
  • 关于实时信号的传送,接收问题。
  • FTP接收文件的问题
  • 求助:UDP编程,无法接收广播数据包
  • 从多个socket接收数据
  • 飞秋聊天程序UDP接收问题
  • 串口接收数据丢失,怀疑是中断引起的,请指教
  • 软件无线电接收器 pmsdr
  • JavaMail的接收html问题
  • kdevelop调试过程如何接收输入


  • 站内导航:


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

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

    浙ICP备11055608号-3