- 论坛徽章:
- 3
|
本帖最后由 mini_peng 于 2015-02-22 00:32 编辑
//---------------------------------------
#include <iostream>
#include "pthread.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/time.h>
#include "andysubstrfun.h"
#include "message_proc_fun.h"
//------------------------------------------------
#ifndef _pthread_tcp_listen_fun_h
#define _pthread_tcp_listen_fun_h
#define PORT 1980 //服务器端口
#define BACKLOG 10 //listen队列中等待的连接数
#define MAXDATASIZE 1024 //缓冲区大小
#define VALIDCMDLEN 64 //定义有效的命令串长度;
typedef struct _CLIENT
{
int fd; //客户端socket描述符
char name[32]; //客户端名称
struct sockaddr_in addr; //客户端地址信息结构体
char data[MAXDATASIZE]; //客户端私有数据指针
} CLIENT;
using namespace std;
//------------------------------------------------
void process_recvData_from_client(CLIENT * client, char *recvbuf, ssize_t len,int client_os_type);
string cmd_str_process_fun01(char *recvStr);
string client_prompt_str;
void *tcp_svr_Listen_fun(void *vargp);
int restart_ntp_fun(void);
//------------------------------------------------
//------------------------------------------------
void *tcp_svr_Listen_fun(void *vargp)
{
int i=0, maxi=0, maxfd=0, sockfd=-1;
int nready=0;
int listenfd=-1, connectfd=0; //socket文件描述符
int sin_size; //地址信息结构体大小
ssize_t n;
fd_set rset, allset; //select所需的文件描述符集合
struct sockaddr_in server; //服务器地址信息结构体
char recvbuf[MAXDATASIZE]={0}; //缓冲区
//CLIENT client[FD_SETSIZE]; //FD_SETSIZE为select函数支持的最大描述符个数
//上面这行,编译通过,但运行时报错,但在源测试文件.CPP中正常,改到.H就异常。于是改为下面的:
CLIENT client[1024];
……(想不明白,于是删除所有代码,加一行,运行一次,发现问题在CLIENT数组这行执行不下去)
return NULL;
}
//------------------------------------------------ |
|