Chinaunix

标题: 在线等!关于cc编译的问题!急!顺便谢谢水中花大虾! [打印本页]

作者: lylouie    时间: 2005-11-05 12:42
标题: 在线等!关于cc编译的问题!急!顺便谢谢水中花大虾!
但我编译server.c的时候出现如下错误。
cc server.c -lsocket
"server.c",line 24:error:undefined symbol:socklen_t
请问socklen_t是在哪定义的!少包含文件吗?还是少CC参数?

        /* File: server.c */

        #include <stdio.h>
        #include <sys/types.h>
        #include <sys/socket.h>
        #include <netinet/in.h>

        int main(int argc, char **argv)
        {
                int fd;
                int address_len;
                struct sockaddr_in address;

                //建立套接口
                fd = socket(AF_INET, SOCK_DGRAM, 0);        //SOCK_DGRAM

                //绑定地址和端口
                bzero(&address, sizeof(address));
                address.sin_family = AF_INET;
                address.sin_addr.s_addr = htonl(INADDR_ANY);
                address.sin_port = htons(1234);
                address_len = sizeof(address);
                bind(fd, (struct sockaddr *)&address, address_len);

                while(1) {
                        struct sockaddr_in client_address;
                        socklen_t len = sizeof(client_address);
                        int n;
                        char line[80];

                        printf("waiting...");
                        fflush(stdout);

                        //接收数据
                        n = recvfrom(fd, line, 80, 0,
                                (struct sockaddr *)&client_address, &len);
                        printf("server received %d:%s", n, line);

                        //发送数据
                        sendto(fd, line, n, 0,
                                (struct sockaddr *)&client_address, len);
                }
        }
作者: snow888    时间: 2005-11-05 12:45
用 grep 找到包含文件就可以了.

在目录 /usr/include 下面,可能还包含子目录.
作者: lylouie    时间: 2005-11-05 12:50
标题: 找哪个文件呢?
socklen_t只是个定义符!为什么这个程序别人可以用呢?
作者: lylouie    时间: 2005-11-05 12:53
标题: 我的是SCO 5。0。5
大虾能否说具体点啊!
作者: donkey    时间: 2005-11-05 13:01
socklen_t 改成 int
作者: lylouie    时间: 2005-11-05 13:03
标题: 你高!
我试试看!
作者: lylouie    时间: 2005-11-05 13:15
标题: 可以是可以编译了!
但不知编译的文件能不能正常执行!另外socklen_t到底在哪个文件中定义,还希望大虾继续明示。再另外,谁有CC的中文资料,我也想多看看,也不能老麻烦大家啊!
作者: renstone921    时间: 2005-11-05 13:52
你用的是sco吗?它上面不一定有socklen_t的。

socklen_t是一个至少32为的值,系统遵循不同的posix标准,有可能没有socklen_t,如果你非要用的话。可以typedef int socklen_t;
作者: hotness28    时间: 2005-11-05 14:09
socklen_t len = sizeof(client_address);

能在程序中声明变量吗?傻鸟
作者: hotness28    时间: 2005-11-05 14:11
在unistd.h中有定义
作者: renstone921    时间: 2005-11-05 14:29
原帖由 hotness28 于 2005-11-5 14:09 发表
socklen_t len = sizeof(client_address);

能在程序中声明变量吗?傻鸟


睁大眼睛看看,那是个复合语句.上面那两个字我就不说了.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2