LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2137|回复: 24

初学unix网络编程提问

[复制链接]
发表于 2004-1-2 00:26:30 | 显示全部楼层 |阅读模式
先看看这个
http://www.xinxi888.com/Library/www/UNIX/UNIX9.HTM

这上面有:TCP回射服务器程序,TCP回射客户端程序 两段程序。

是一段放在服务器,一段放在客户端吗?

如果是的, 我是不是要这样做:

vi pro1.c
cc -o pro1 pro1.c
chmod u+x pro1
然后运行。(就像普通的C一样?)
发表于 2004-1-2 00:33:30 | 显示全部楼层
不用作最后一步,即不用改权限。
发表于 2004-1-2 01:30:23 | 显示全部楼层
编译了以后程序本身就是+x的
 楼主| 发表于 2004-1-2 13:18:43 | 显示全部楼层
哦!
但是程序中#include "unp.h"
是不是有问题啊??
 楼主| 发表于 2004-1-2 13:30:56 | 显示全部楼层
我cc -o ** **.c后,出现:
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Socket'
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Bind'
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Listen
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Socket'
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Accept'
..

我每编译一次,ccTq964U.o这段都会变,比如变成...ccwxOnB0.o...,...ccoaCwyI.o...,好像是指针问题。

到底是什么意思啊??
 楼主| 发表于 2004-1-2 14:08:11 | 显示全部楼层
#include <errno.h>      
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <netdb.h>
这些是我添加的库!!
发表于 2004-1-2 23:17:44 | 显示全部楼层
unp.h是UNP(UNIX Network Programming)里的,Richard Stevens写的,听说过吧,呵呵
 楼主| 发表于 2004-1-3 11:14:07 | 显示全部楼层
我cc -o ** **.c后,出现:
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Socket'
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Bind'
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Listen
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Socket'
/tmp/ccTq964U.o(.text+0*1a):undefined reference to 'Accept'
..

我每编译一次,ccTq964U.o这段都会变,比如变成...ccwxOnB0.o...,...ccoaCwyI.o...,好像是指针问题。

到底是什么意思啊??
 楼主| 发表于 2004-1-3 11:17:31 | 显示全部楼层
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <netdb.h>

int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr;

if (argc != 2)
err_quit("usage: tcpcli <IPaddress>");

sockfd = Socket(AF_INET, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(SERV_PORT);
Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

Connect(sockfd, (struct servaddr *) &servaddr, sizeof(servaddr));

str_cli(stdin, sockfd); /* do it all */

exit(0);
}

就是这个程序编译后出现了上面的问题??
how to 解决啊??
发表于 2004-1-3 11:57:18 | 显示全部楼层
编译上一楼的程序不能通过?

# gcc -c socketA.c
socketA.c: In function `main':
socketA.c:17: `SERV_PORT' undeclared (first use in this function)
socketA.c:17: (Each undeclared identifier is reported only once
socketA.c:17: for each function it appears in.)
#
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表