将Unix套接字移植到Windows

时间:2015-04-01 15:39:52

标签: c++ windows sockets unix tcp

我有一个简单的C ++库来实现unix套接字,它在Linux系统上运行得很好,但是我遇到了将部分代码移植到Windows平台的问题,显然它不支持unix套接字。据我所知,替代方案是实现TCP套接字,其原理非常相似(从TCP端口而不是特定文件写入/读取)。

在上下文和逻辑上,代码的转换是否足够简单,可以在现有代码之上实现,还是应该从头开始重写代码?

2 个答案:

答案 0 :(得分:1)

Berkeley API 确实存在于Windows上,并且与其他任何Berkeley套接字实现都很兼容。

请参阅MSDN文章" 将套接字应用程序移植到Winsock "有关将套接字代码移植到Windows的信息。

答案 1 :(得分:1)

套接字无法在Windows上运行的一个常见原因是您需要运行WSAStartup来启动Winsock DLL。像这样:

WORD wVersionRequested;
WSADATA wsaData;
int err;

/* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */
wVersionRequested = MAKEWORD(2, 2);

err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0) {
    /* Tell the user that we could not find a usable */
    /* Winsock DLL.                                  */
    printf("WSAStartup failed with error: %d\n", err);
    return 1;
}

除此之外,Windows套接字API(WSA)就像Berkeley套接字一样。