Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接VMCI流套接字_C_Sockets_Vmware - Fatal编程技术网

连接VMCI流套接字

连接VMCI流套接字,c,sockets,vmware,C,Sockets,Vmware,我正在尝试使用VMCI套接字在虚拟机及其主机之间建立面向流的连接。我成功地启动了服务器,绑定了一个地址,将其置于监听模式,并调用accept等待客户端。但是,每当我从客户端调用connect(…)时,我都会收到一个WSAECONNRESET错误 我的客户代码是: int sockfd; WSADATA wsaData; WORD wVersionRequested = MAKEWORD(2, 2); // initialize sockets for win32 if (WSAStar

我正在尝试使用VMCI套接字在虚拟机及其主机之间建立面向流的连接。我成功地启动了服务器,绑定了一个地址,将其置于监听模式,并调用accept等待客户端。但是,每当我从客户端调用
connect(…)
时,我都会收到一个
WSAECONNRESET
错误

我的客户代码是:

int sockfd;    
WSADATA wsaData;
WORD wVersionRequested = MAKEWORD(2, 2);

// initialize sockets for win32
if (WSAStartup(wVersionRequested, &wsaData) != 0) {
    perror("Could not register with Winsock DLL.\n");
    exit(-1);
}

// get VMCI socket file descriptor
int afVMCI = VMCISock_GetAFValue();
if ((sockfd = socket(afVMCI, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(-1);
}

// initialize server address
struct sockaddr_vm their_addr = {0};
their_addr.svm_family = afVMCI;
their_addr.svm_cid = 2;
their_addr.svm_port = 1234;

// connect to server
if ((connect(sockfd, (struct sockaddr *) &their_addr, sizeof(their_addr))) == -1) {
    int e = WSAGetLastError();
    printf("Error: %d\n", e);
    exit(-1);
}

printf("Connected!\n");
每当我使用数据报套接字时,问题并不存在。(当然,不需要调用listen、accept和connect。在这种情况下,我只需使用
sendto(…)
,这很好。)

从中,我发现:

在Workstation 7.0中,Linux主机、Linux来宾和Windows来宾支持流套接字,但Windows主机只支持数据报套接字


由于我的主机电脑运行Windows,因此不支持此操作。

我只想澄清一点:“每当我在客户端上调用connect(…)”。。。您的意思是,“每当我从客户端调用connect()以连接到服务器时”?现在的措辞听起来像是服务器正在尝试连接到客户端。根据我对WSAECONNRESET错误描述的阅读,这听起来像是服务器端的问题。服务器在客户端连接后还能生存吗?是的,我的意思是“从客户端连接”;刚刚解决了这个问题。我以同样的方式解释错误消息,但服务器似乎还不错。至少我没有犯错误。。。