论坛风格切换切换到宽版
  • 1121阅读
  • 6回复

[问题求助][Ubuntu] 麻烦各位帮我看看这些代码哪里有问题为什么编译不过去呢 [复制链接]

上一主题 下一主题
离线free51.
 
发帖
2027
C币
3574
威望
381
贡献值
1
银元
-4
铜钱
4639
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
头文件server.h
int buil.d_tcp_server(char *ip, int port, struct sockaddr_i.n *tcpaddr);电脑
int t.cp_get_infor(int n.ew_id, char *infor);.
int tcp_send_infor(int sockfd,.. char *infor);            杀毒
char *check_soft_infor(char *ware_n.ame,. char *var_file);外贸
int che.ck_soft_id(.char *ware_id, char *id_file);           鲜花
int tcp_get_file(int sockfd, struct sockadd.r_in *t.cpaddr, char *save_name);            杀毒
int tcp_se.nd_file(int sockfd, struct s.ockaddr_in *tcpaddr, char *send_.name);           建材
int compare_file(.char *client_file, ch.ar *server_file, char* new_file);学习
int server_update_file(int sockfd, struct socka.ddr_in *tcpaddr.);            杀毒
server.c文件
int main()
{
  .      struct sockaddr_.in tcpaddr;.
   .     int s.ockid, new_fd;健康
   ..     char ware_name[20];.
        //.char. ware_var_server[20];           建材
.       char ware_var_cli.ent[20];教育
        .char ware_id[20];(广告)
        int f.lag_id;           女人
     .   sockid = build_tcp_.server("10.1.2.35", 8000, tcpaddr);.
        .//listen(sockid,. 10);             汽车
      .  while (1).
        {
   .             new_fd = accept(sockid, (struct socka.ddr)&tcpaddr, &sizeof(struc.t sockaddr_in));外贸
                .tcp_get_infor(new_fd, tcpaddr, war.e_name);    外汇
       .         w.are_name = check_soft_infor(ware_name, "./server/server_var.ini");..
                tcp_get_infor(new_fd, tcpa.ddr., ware_var_client);健康
.               if(strcmp(w.are_name, ware_var_client) != 0)    美容
                        tcp_send_infor(new_.fd, tcpaddr, "need. update");.
                .else健康
            .    {虚拟主机
                 .       tcp_s.end_infor(new_fd, tcpaddr, "need not");.
                 .       contin.ue;教育
     .           }健康
.             .  tcp_get_infor(new_fd, tcpaddr, ware_id);    美容
                flag_id = check_soft_id(wa.re_id, "./server/s.erver_id.ini");
                if(flag_id == 0.)..
               .         tcp_send_infor(new_fd, tcpaddr., 0);外贸
                els.e学习
   .             {.
                     .   tcp_send_infor.(new_fd, tcpaddr, -1);<性病>
            .  .          continue;.
    .            }.
                tcp._get_file(new_fd, tcpaddr, "./server/client_file.ini.");.
                com.pare_file( "./server/client_update_file.i.ni",             电子
             .                             "./server/server_file..ini",.
                                 .  .       "./server/need_update_file.ini");              乙肝
                tcp_sen.d_file(new_fd, tcpadd.r, "./server/ne.ed_update_file.ini");.
                server_update_file(new_fd, t..cpaddr);          婚庆
        }
}

int .build_tcp_server(char *ip, int port,. struct sockaddr_in *tcpaddr)           鲜花
{
   .     int sockfd;    外汇
        if(.soc.kfd = socket(AF_INET, SOCK_STREAM, 0)).
        {
       .         fpr.intf(stderr,"Socket error:%s\n\a",strerror(errno)); .
   .             exit(1);虚拟主机
        }
   .     bzero(tcpaddr, sizeof(struct sockaddr_in.));教育
     .   tcpa.ddr->sin_family = AF_INET;外贸
        tcpaddr->sin_.ad.dr.S_addr = htonl(ip);.
   .     tcpaddr-.>sin_port = htons(port);电影
        i.f (bind(sockfd, (struct s.ockaddr *)tcpaddr, sizeof(struct socka.ddr)))          婚庆
        {
                fprintf(stderr,"Bind error:%s\n\a",strer.ror(errno)).; 外贸
        ex.it(1); (        游戏          )

        }
        if (l.isten(so.ckfd, 5) == -1)             电子
        {
           .     fprintf(stde.rr,"Listen error:%s\n\a",strerror(errno));             杀毒
       . exit(1); .
        }
        return sockfd;.           女人
}

function.c文件
int .tcp_get_infor(int new_id, c.har *infor)(        游戏          )
{
        if (read(new_id, infor, s.trlen(infor)) =.= -1)[成人用品]
        {
        .        fprintf.("read error!"); 虚拟主机
        ex.it(1); <性病>
        }
}

c.har *c.heck_soft_infor(char *ware_name, char *var_file)(        游戏          )
{
        FILE *fp.;           鲜花
        .char server_name[20];..
        if.((fp = fopen(var_file, "r.t")) == NULL).
        {
             .   p.uts("Can't open file");.
       .         exit(1);    美容
        }
        wh.ile (!feof(fp))虚拟主机
        {
                fge.ts(server_name,. 20 ,fp);           女人
                if. (strcmp(.server_name, ware_name) == 0).
               . {    外汇
                        fgets(ware_na..me, 20 ,fp);             电子
         .   .            return ware_name;健康
  .              }[成人用品]
        }
        printf("Can.'t find th.e ware!");健康
     .   fclose(fp);.
        return NU.LL;    美容
}

int tcp_send_infor(int n.ew_id, char *in.for)健康
{
        if (write(new_id, in.for, strlen(info.r)) == -1)             汽车
        {
                fp.r.intf("write error!"); [成人用品]
        exit(.1);              汽车
        }
}

int check_soft_..id(char *ware_id, char *id_file)虚拟主机
{
        FILE *.fp;投资
        char s..erver_id[20];            杀毒
        if((.fp = fopen(id_file., "rt")) == NULL)--- 印刷
        {
                pu.ts("Can't open fi.le");.
                exi.t(1);.
        }
        w.hile (!feof(fp)).
        {
                fg.ets(server_.id, 20 ,fp);             电子
                if (strcm.p(server_id, wa.re_id) == 0)健康
    .            {.
    .       .             return 0;.
              .  }外贸
        }
  .              else    美容
.               {.
            .    .        printf("ID error!");--- 印刷
  .    .                  return -1;投资
         .       }    美容
}

int .tcp_get_file(int sockfd, struct so.ckaddr_in *tcpaddr, char *save_name)(广告)
{
        
}

我来回答



评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线klxqlqw.
发帖
2074
C币
-262870
威望
355
贡献值
2
银元
-3
铜钱
4474
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
Re:[Ubuntu]
头文件client.h
int build_tcp_client(char *ip, int port, struct sockaddr_in tcpaddr);
int get_file_infor(char *file_name, char *save_infor, int line);
int tcp_get_infor(int sockid, struct sockaddr_in *tcpaddr, char *infor);
int tcp_send_infor(int sockid, struct sockaddr_in *tcpaddr, char *infor);
int tcp_send_file(int sockid, struct sockaddr_in *tcpaddr, char *send_name);
int tcp_get_file(int sockid, struct sockaddr_in *tcpaddr, char *save_name);
int client_update_file(int sockid, struct sockaddr_in *tcpaddr, char *update_file);

client.c文件

int main(){
        struct sockaddr_in tcpaddr;
        char ware_name[20];
        char ware_var[20];
        char flag[20];
        int id;
        int sockid;
        sockid = build_tcp_client("10.1.2.35", 8000, tcpaddr);
        connect(sockid, (struct sockaddr)&tcpaddr, sizeof(struct sockaddr));
        get_file_infor("./client_ini/client_var.ini", ware_name, 1);
        tcp_send_infor(sockid, tcpaddr, ware_name);
        get_file_infor("./client_ini/client_var.ini", ware_var, 2);
        tcp_send_infor(sockid, tcpaddr, ware_var);
        tcp_get_infor(sockid, tcpaddr, flag);
        if(strcmp(flag, "need not") == 0)
        {
                printf("NEED NOT UPDATE!\n");
                return 0;
        }
        else
                printf("send id...\n");
        get_file_infor("./client_ini/client_var.ini", ware_var, 3);
        tcp_send_infor(sockid, tcpaddr, ware_var);
        tcp_get_infor(sockid, tcpaddr, id);
        if(id != -1)
        {
                printf("CAN NOT UPDATE! ID error\n");
                return 0;
        }
        tcp_send_file(sockid, tcpaddr, "./client_ini/client_file.ini");
        tcp_get_file(sockid, tcpaddr, "./client_ini/update_file.ini");
        client_update_file(sockid, tcpaddr, "./client_ini/update_file.ini");
}

function.c文件

int build_tcp_client(char *ip, int port, struct sockaddr_in tcpaddr)
{
        int sockfd;
        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
        fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));
        exit(1);
        }
        bzero(tcpaddr, sizeof(struct sockaddr_in));
        tcpaddr->sin_family = AF_INET;
        tcpaddr->sin_addr.S_addr = htonl(ip);
        tcpaddr->sin_port = htons(port);
}

int get_file_infor(char *file_name, char *save_infor, int line)
{
        FILE *fp;
        if((fp = fopen(file_name, "rt")) == NULL)
        {
                puts("Can't open file");
                exit(1);
        }
        for (int i=0; i<line; i++)
        {
                if (!feof(fp))
                {
                        fgets(save_infor, 20 ,fp);
                }
                else
                {
                        printf("file line wrong!");
                        return -1
                }
        }
        return 0;
}

int tcp_get_infor(int new_id, char *infor)
{
        if (read(new_id, infor, strlen(infor)) == -1)
        {
                fprintf("read error!");
        exit(1);
        }
}

int tcp_send_infor(int new_id, char *infor)
{
        if (write(new_id, infor, strlen(infor)) == -1)
        {
                fprintf("write error!");
        exit(1);
        }
}


离线fglive.
发帖
2112
C币
-235157
威望
392
贡献值
1
银元
-3
铜钱
4731
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
Re:[Ubuntu]
麻烦各位高手帮我看看,为什么都调试通不过啊...最好能告诉我怎样修改...谢谢了...


离线yszkm.
发帖
2099
C币
-152659
威望
380
贡献值
1
银元
-3
铜钱
4664
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
Re:[Ubuntu]
运行server下的function.c 编译出现的错误neusoft@neusoft-desktop:~/server$ gcc function.c
function.c:1: warning: "struct sockaddr_in" declared inside parameter list
function.c:1: warning: its scope is only this definition or declaration, which is probably not what you want
function.c: In function `build_tcp_server':
function.c:4: error: `AF_INET' undeclared (first use in this function)
function.c:4: error: (Each undeclared identifier is reported only once
function.c:4: error: for each function it appears in.)
function.c:4: error: `SOCK_STREAM' undeclared (first use in this function)
function.c:6: error: `stderr' undeclared (first use in this function)
function.c:6: error: `errno' undeclared (first use in this function)
function.c:9: error: 对不完全的类型"
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see <URL:file:///usr/share/doc/gcc-3.4/README.Bugs>.

编译server.c时出现的错误
server.c: In function `main':
server.c:3: error: storage size of 'tcpaddr' isn't known
server.c:14: error: 对不完全的类型"
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see <URL:file:///usr/share/doc/gcc-3.4/README.Bugs>.

运行client下的function.c 编译出现的错误
function.c:1: warning: "struct sockaddr_in" declared inside parameter list
function.c:1: warning: its scope is only this definition or declaration, which is probably not what you want
function.c:2: error: parameter `tcpaddr' has incomplete type
function.c: In function `build_tcp_client':
function.c:4: error: `AF_INET' undeclared (first use in this function)
function.c:4: error: (Each undeclared identifier is reported only once
function.c:4: error: for each function it appears in.)
function.c:4: error: `SOCK_STREAM' undeclared (first use in this function)
function.c:6: error: `stderr' undeclared (first use in this function)
function.c:6: error: `errno' undeclared (first use in this function)
function.c:9: error: 对不完全的类型"
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see <URL:file:///usr/share/doc/gcc-3.4/README.Bugs>.

编译client.c时出现的错误
client.c: In function `main':
client.c:3: error: storage size of 'tcpaddr' isn't known
client.c:10: error: 对不完全的类型"
Internal compiler error: Error reporting routines re-entered.
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
For Debian GNU/Linux specific bug reporting instructions,
see <URL:file:///usr/share/doc/gcc-3.4/README.Bugs>.


离线donghai.
发帖
2040
C币
-60952
威望
331
贡献值
1
银元
-2
铜钱
4394
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
Re:[Ubuntu]
第一次看到没有#include的程序
你是没有贴全还是忘写了


离线zxlovest.
发帖
2235
C币
-60023
威望
421
贡献值
1
银元
-1
铜钱
5033
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
Re:[Ubuntu]
function.c:2: error: parameter `tcpaddr' has incomplete type
function.c: In function `build_tcp_client':
function.c:4: error: `AF_INET' undeclared (first use in this function)
function.c:4: error: (Each undeclared identifier is reported only once
function.c:4: error: for each function it appears in.)
function.c:4: error: `SOCK_STREAM' undeclared (first use in this function)
function.c:6: error: `stderr' undeclared (first use in this function)
function.c:6: error: `errno' undeclared (first use in this function)


没有,或不正常的头文件。


离线poomo.
发帖
2145
C币
-604700
威望
359
贡献值
5
银元
-3
铜钱
4675
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
Re:[Ubuntu]
没有包括必要的头文件,如<sys/socket.h>、<netinet/in.h>,gcc编译还好一些,如果换成g++编译报错更多!

快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个