当前位置: 首页 > 知识库问答 >
问题:

协议不支持地址族

盖绪
2023-03-14

下面的代码是TCP客户端的套接字编程示例。

但当我运行该操作时,connect()作为协议不支持的地址族返回。

#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;
}

共有1个答案

须原
2023-03-14

代码将错误的目标地址和错误数量的参数传递给inet_pton()。(对于后者,编译器应该提醒您注意,顺便说一句)

这一行

 inet_pton(AF_INET, "127.0.0.1", &server, sizeof(server));

应该是

 inet_pton(AF_INET, "127.0.0.1", &server.sin_addr);
int n;
[...]
printf("%d, %s\n", n, buf);

成为:

ssize_t n;
[...]
printf("%zd, %s\n", n, buf);
 类似资料:
  • 问题内容: 在android中,我收到以下错误: NativeStart.main(String [])行:不可用[本机方法] 我的代码正在尝试使用Web服务: 我的程序正在连接到互联网…。但是它在下面的行中引发异常: 并且异常messege为NULL。传递的所有参数都是正确的。AndroidManifest.xml也可以。 在Log Cat中,我遇到以下异常:java.net.SocketExc

  • 问题内容: 在我编写的一个应用程序中,我在特定计算机上有一个 **java.net.SocketException** : java.net.SocketException:协议族不支持的地址族:connect 这台特定的计算机运行Windows 7 32位,并通过本地连接(Ethernet)连接到Internet。该应用程序可在其他通过Windows 7和Windows 8通过本地连接或Wi-

  • WorkerMan在接口上支持各种协议,只要符合ConnectionInterface接口即可(参见定制通讯协议章节)。 为了方便开发者,WorkerMan提供了HTTP协议、WebSocket协议以及非常简单的Text文本协议、可用于二进制传输的frame协议。开发者可以直接使用这些协议,不必再二次开发。如果这些协议都不满足需要,开发者可以参照定制协议章节实现自己的协议。 开发者也可以直接基于t

  • 我们正在编写一个应用程序,它必须使用HTTPS与几个服务器通信。它需要与AWS通信(使用AWS库),还需要与我们使用TLS1.2的一些内部服务通信。 我首先将HttpClient更改为使用TLS1.2SSLContext: 并且(通过spring)将这个SchemeRegistry注入到DefaultHttpClient对象中,但是这样做会从AWS得到错误,因此我假设(我可能错了)AWS不支持TL

  • Sphinx的searchd守护程序从 版本0.9.9-rc2开始支持MySQL二进制网络协议,并且能够通过标准的MySQL API访问。例如,“mysql”命令行程序可以很好地工作。以下是用MySQL客户端对Sphinx进行查询的例子: $ mysql -P 9306 Welcome to the MySQL monitor. Commands end with ; or \g. Your M