Следующий код - это пример программирования сокета для клиента TCP.
Но когда я запустил это, connect() возвращается, поскольку семейство адресов не поддерживается протоколом.
Я слышал, эта проблема произойдет, если платформа не поддерживает ipv6.
Но AF_INET, который я написал, это ipv4.
Также мой сервер, то есть CentOS6.4, настроен внутри inet6 addr.
Кто-нибудь знает, почему?
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int
main(){
struct sockaddr_in server;
int sock;
char buf[32];
int n;
sock = socket(AF_INET,SOCK_STREAM,0);
perror("socket");
server.sin_family = AF_INET;
server.sin_port = htons(12345);
inet_pton(AF_INET,"127.0.0.1",&server,sizeof(server));
connect(sock,(struct sockaddr *)&server,sizeof(server));
perror("connect");
memset(buf,0,sizeof(buf));
n = read(sock,buf,sizeof(buf));
perror("read");
printf("%d,%s\n",n,buf);
close(sock);
return 0;
}