免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3525 | 回复: 11
打印 上一主题 下一主题

我都搞一夜了,也没搞出来为什么我的程序编译不出来!拜托大家!!急急!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-05 03:11 |只看该作者 |倒序浏览
我编译下面文件
cc client.c
提示
udefined                   first referenced
symbol                        in file
socket                         client.o
.....
i386ld fatal: symbol referencing error.No output written to a.out

请问各位大虾,我该怎么办好呢?


        /* File: client.c */

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

        int main(int argc, char **argv)
        {
                int fd;
                struct sockaddr_in address;
                int address_len;
                char line[80] = "Client to Server string!\n";
                int n;

                //建立套接口
                fd = socket(AF_INET, SOCK_DGRAM, 0);//AF_INET和SOCK_DGRAM的组合对应UDP协议

                //联接
                bzero(&address, sizeof(address));
                address.sin_family = AF_INET;
                address.sin_addr.s_addr = inet_addr("193.193.196.1");
                address.sin_port = htons(1234);
                address_len = sizeof(address);

                //发送数据
                sendto(fd, line, strlen(line)+1, 0,
                        (struct sockaddr *)&address, sizeof(address));

                //接收数据
                n = recvfrom(fd, line, 80, 0, NULL, NULL);
                printf("received %d:%s", n, line);
        }

论坛徽章:
0
2 [报告]
发表于 2005-11-05 07:57 |只看该作者
cc client.c   -lsocket

论坛徽章:
0
3 [报告]
发表于 2005-11-05 12:39 |只看该作者

谢谢水中花!

仿佛可以了。
但我编译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);
                }
        }

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2005-11-05 12:44 |只看该作者
socklen_t 没有定义,找到定义 socklen_t 数据类型的头文件,包含它就是了.

论坛徽章:
0
5 [报告]
发表于 2005-11-05 13:50 |只看该作者
cc server.c -lsocket -lnsl


还有你的client没有connect. Server没有listen 也没有accept,能建立链接吗?

[ 本帖最后由 mingjwan 于 2005-11-5 13:52 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2005-11-05 14:13 |只看该作者
while(1) {
                        struct sockaddr_in client_address;  #这里不该声明变量了
                        socklen_t len = sizeof(client_address);#这里不该声明变量了
                        int n; #这里不该声明变量了
                        char line[80]; #这里不该声明变量了

论坛徽章:
0
7 [报告]
发表于 2005-11-05 20:21 |只看该作者

谢谢mingjwan

cc server.c -lsocket -lnsl
和cc server.c -lsocket效果一样,谁能告诉我后面的参数代表什么啊!
还有到底socketlen_t是什么东东,在哪个文件里?

论坛徽章:
0
8 [报告]
发表于 2005-11-05 20:23 |只看该作者

难道循环里就不能声明变量了?

质疑hotness28!

论坛徽章:
0
9 [报告]
发表于 2005-11-05 21:11 |只看该作者

回答mingjwan

还有你的client没有connect. Server没有listen 也没有accept,能建立链接吗?
-----因为我用UDP,用于在无连接的数据报socket方式下进行数据传输。由于本地socket并没有与远端机器建立连接,所以用sendto()指明了目的地址
丝路花语 该用户已被删除
10 [报告]
发表于 2005-11-05 21:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP