c - 套接字错误 10047

标签 c sockets

所以我真的被困在这里,只是想制作一个简单的 C 程序,将网页内容放入缓冲区,但我遇到了一些问题;考虑以下几点:

WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if(err != 0)
{
    printf("could not find a usable winsock.dll");
    return NULL;
}
if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
{
    printf("could not find a usable winsock.dll");
    WSACleanup();
    return NULL;
}
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
struct sockaddr_in sa = { 0 };
sa.sin_port = htons(port);
sa.sin_addr.s_addr = inet_addr(ip);
connect(sock, (struct sockaddr*)&sa, sizeof(sa));

变量ipport 是从main 传递过来的。如您所见:

readsite("http://www.pagetutor.com/html_tutor/index.html", "68.71.137.60", 80);

我从 printf("\n%d", GetLastError()); 行下方的 connect(sock, (struct sockaddr*) &sa, sizeof(sa)); 根据微软的说法,这段代码意味着“指定系列中的地址不能用于此套接字”,所以我完全不知道从这里开始做什么。

最佳答案

您没有设置 sin_family,所以它被设置为 AF_UNSPEC(因为您对 sa 进行了 0 初始化)。在连接之前,尝试:

sa.sin_family = AF_INET;

关于c - 套接字错误 10047,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974389/

相关文章:

c - visual studio c 库的 ABI 兼容性

curses.h 库中的 Clear() 函数

c - 告诉客户端何时完成写入缓冲区

sockets - so_reuseaddr相关的问题

python - 使用套接字库从两个 Raspberry Pi 来回发送数据

c - TCP/IP 套接字,读取错误? (Linux)

flash - 如何在 Flash AS3 中处理实时视频流?

c - 如何使用 `stat`通过符号链接(symbolic link)获取最终终点的路径

java - 如何在没有 "0x00007fffe0dde513 in ?? ()"的情况下生成有效的 JDK9 调试版本?

C、HTTP 1.1 和 Socket Send 的麻烦