debug assertion failed expression:(fh>=0 && ( unsigned) fh<(unsigned)_nhandl

代码如下

server.c

----------------------------------------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
//#include <arpa/inet.h>
//#include <sys/socket.h>
//#include <unistd.h>
#include <fcntl.h>
#include <sqlca.h>


#include <Winsock2.h>


#pragma   comment(lib, "ws2_32.lib ")

#include "MyUser.h"

extern User* db_query_user(User*);
extern void db_connect();
extern void db_disconnect();

 /*服务器监听端口号 */
#define BACKLOG 10 /* 最大同时连接请求数 */
#define MAXDATASIZE 1024
int main()
{
    int server_sockfd,client_sockfd;    //sock_fd:监听socket;client_fd:数据传输socket
    struct sockaddr_in server_addr,client_addr;         
    int client_len,server_len;
    int port=4000;
    //char res_msg[MAXDATASIZE];

    char get_message[MAXDATASIZE];
    char send_message[MAXDATASIZE];

    //char userID[10];
    User usr;
    User pusr;
   
    //char* send_msg="you  have connected server !";
    int recvbytes;
    int i=2;

    WORD version;
    WSADATA wsaData;
    int ret;
    version=MAKEWORD(2,2);
    ret=WSAStartup(version, &wsaData);
    if(ret!=0){
        ExitProcess(-1);
    }

    if ((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
        perror("socket创建出错!");
        //exit(1);
    }

    server_addr.sin_family=AF_INET;
    server_addr.sin_addr.s_addr =inet_addr("192.168.100.94");
    //server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    server_addr.sin_port=4000;
    server_len=sizeof(server_addr);
   
    if (bind(server_sockfd, (struct sockaddr *)&server_addr, server_len) == -1)
    {
        perror("bind出错!");
        //exit(1);
    }

    if(listen(server_sockfd, BACKLOG) == -1)
    {
        perror("listen出错!");
        //exit(1);
    }
   
    while(i>0)
    {
        i--;
        printf("Server waiting.../n");
       
        client_len = sizeof(client_addr);

        if ((client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_addr, &client_len)) == -1)
        {
            perror("accept出错");
            continue;
        }
       
       
       
        //if (send(client_sockfd, send_msg, strlen(send_msg), 0) == -1)
        //{
        //    perror("send出错!");
        //}

        if ((recvbytes=recv(client_sockfd,get_message, MAXDATASIZE, 0)) ==-1)
        {
            perror("recv出错!");           
            //exit(1);   
        }

        //get_message[recvbytes] = '/0';

       
        memcpy(&usr,get_message,sizeof(User));

        //memset(pusr,0,sizeof(User));
       
        db_connect();
        memcpy(&pusr,db_query_user(&usr),sizeof(User));
        db_disconnect();
       

       
        memcpy( (char*)send_message,(char*)&pusr , MAXDATASIZE);

        if (send(client_sockfd,send_message, sizeof(send_message), 0) == -1)
        {
            perror("send出错!");
        }
         
        close(client_sockfd);


        //exit(0);
       
    }
    return 0;
}
-------------------------------------------------------------------------------------

MyUser.h

----------------------

typedef struct user{   
    char name[20];
    char password[20];
    char id[10];
}User;
---------------------------------------------

 

User * db_query_user(User user)

这个是用proc写的程序。返回一个User指针。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值