LinuxSir.cn,穿越时空的Linuxsir!

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

linux ipv6网络编程之服务器端问题

[复制链接]
发表于 2006-4-14 20:46:32 | 显示全部楼层 |阅读模式
这是是我改的V4的,可执行的时候总是绑定错误,各位帮我看下呢!谢谢!
#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define PORT 1234

#define BACKLOG 1

int main(void)

{

int listenfd, connectfd;

struct sockaddr_in6 server;

struct sockaddr_in6 client;

int sin_size;

static char str[128];



if((listenfd=socket(AF_INET6, SOCK_STREAM, 0))==-1)

{

perror("Create socket failed");

exit(-1);

}

int opt=SO_REUSEADDR;

setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

bzero(&server, sizeof(server));

server.sin6_family = AF_INET6;

server.sin6_port = htons(PORT);

server.sin6_addr=in6addr_any;

if (bind(listenfd, (struct sockaddr_storage *)&server, sizeof(struct sockaddr_storage))==-1)

{

perror("Bind error");

exit(-1);

}

if (listen(listenfd, BACKLOG) == -1)

{

perror("listen error");

exit(-1);

}



sin_size = sizeof(struct sockaddr_in6);

if ((connectfd = accept(listenfd, (struct sockaddr *)&client, &sin_size)) == -1)

{

perror("accept error");

exit(-1);

}

printf("you get a connection from %s\n", inet_ntop(AF_INET6,&client.sin6_addr,str,sizeof(str)));

send(connectfd,"welcome to my server\n",54, 0);

close(connectfd);

close(listenfd);

}
结果就这个样子!:
[root@localhost program]# ./server
Bind error: Invalid argument
发表于 2006-4-14 21:55:10 | 显示全部楼层
你的网络系统确实是IPv6?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 22:10:16 | 显示全部楼层
我的redhat 9.0上有两块网卡,一个配置的是v4地址,一个配置的是v6地址!应该叫双协议栈吧!系统不应该存在问题了吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 22:10:22 | 显示全部楼层
我的redhat 9.0上有两块网卡,一个配置的是v4地址,一个配置的是v6地址!应该叫双协议栈吧!系统不应该存在问题了吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 22:16:10 | 显示全部楼层
我的redhat 9.0上有两块网卡,一个配置的是v4地址,一个配置的是v6地址!应该叫双协议栈吧!系统不应该存在问题了吧!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-14 23:23:54 | 显示全部楼层
我的redhat 9.0上有两块网卡,一个配置的是v4地址,一个配置的是v6地址!应该叫双协议栈吧!系统不应该存在问题了吧!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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