当前位置: 技术问答>linux和unix
关于inet_ntoa的请教
来源: 互联网 发布时间:2016-03-14
本文导语: 我的服务端代码如下: #include #include #include #include #include #include #include #include #include #define SERVPORT 2234 #define BACKLOG 10 int main( int argc , char argv[]) { printf("hello linuxn"); int sockfd,client_fd; struct sockad...
我的服务端代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 2234
#define BACKLOG 10
int main( int argc , char argv[])
{
printf("hello linuxn");
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
printf("socket ready creating!n");
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("creat socket error!n");
exit(1);}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = htons(INADDR_ANY);
printf("socket creat ok!!!n");
memset(&(my_addr.sin_zero),0,8);
int BIND=bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr));
if(BIND==-1)
{
printf("bind error!!!n");
exit(1);
}
printf("bind ok!!!n");
if(listen(sockfd,BACKLOG)==-1)
{
printf("listen error!!!n");
exit(1);
}
printf("listen ok!!!!n");
while(1) {
socklen_t sin_size = sizeof(struct sockaddr_in);
if ((client_fd = accept(sockfd, (struct sockaddr *) &remote_addr, &sin_size)) == -1) {
perror( "accept error");
continue;
}
printf( "received a connection from %sn", inet_ntoa(remote_addr.sin_addr));
if (!fork()) {
if (send(client_fd, "Hello, you are connected!n", 26, 0) == -1)
perror( "sende rror!");
close(client_fd);
exit(0);
}
close(client_fd);
}
}
编译的时候出现以下错误,请教下啥原因呢?
test3 >gcc -l socket serser.c -o serser
未定义 文件中的
符号 在文件中
inet_ntoa /var/tmp//cc2ozsVt.o (符号属于隐含从属的/usr/lib/libnsl.so.1)
ld: 致命的: 符号参照错误. 没有输出被写入serser
collect2: ld returned 1 exit status
test3 >
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 2234
#define BACKLOG 10
int main( int argc , char argv[])
{
printf("hello linuxn");
int sockfd,client_fd;
struct sockaddr_in my_addr;
struct sockaddr_in remote_addr;
printf("socket ready creating!n");
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("creat socket error!n");
exit(1);}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(SERVPORT);
my_addr.sin_addr.s_addr = htons(INADDR_ANY);
printf("socket creat ok!!!n");
memset(&(my_addr.sin_zero),0,8);
int BIND=bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr));
if(BIND==-1)
{
printf("bind error!!!n");
exit(1);
}
printf("bind ok!!!n");
if(listen(sockfd,BACKLOG)==-1)
{
printf("listen error!!!n");
exit(1);
}
printf("listen ok!!!!n");
while(1) {
socklen_t sin_size = sizeof(struct sockaddr_in);
if ((client_fd = accept(sockfd, (struct sockaddr *) &remote_addr, &sin_size)) == -1) {
perror( "accept error");
continue;
}
printf( "received a connection from %sn", inet_ntoa(remote_addr.sin_addr));
if (!fork()) {
if (send(client_fd, "Hello, you are connected!n", 26, 0) == -1)
perror( "sende rror!");
close(client_fd);
exit(0);
}
close(client_fd);
}
}
编译的时候出现以下错误,请教下啥原因呢?
test3 >gcc -l socket serser.c -o serser
未定义 文件中的
符号 在文件中
inet_ntoa /var/tmp//cc2ozsVt.o (符号属于隐含从属的/usr/lib/libnsl.so.1)
ld: 致命的: 符号参照错误. 没有输出被写入serser
collect2: ld returned 1 exit status
test3 >
|
gcc下运行命令gcc -o server server.c可以正常编译通过呀。运行生成的可执行文件也正常,不知楼主为何编译不过?
|
gcc -o serser serser.c -static
或则gcc -o serser serser.c -shared
试一下。
或则gcc -o serser serser.c -shared
试一下。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。