我有一个简单的C ++库来实现unix套接字,它在Linux系统上运行得很好,但是我遇到了将部分代码移植到Windows平台的问题,显然它不支持unix套接字。据我所知,替代方案是实现TCP套接字,其原理非常相似(从TCP端口而不是特定文件写入/读取)。
在上下文和逻辑上,代码的转换是否足够简单,可以在现有代码之上实现,还是应该从头开始重写代码?
答案 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套接字一样。