套接字无法连接到本地主机

socket can t connect to localhost

我在windows 8.1 下写了这段代码。我想首先将我的套接字连接到本地主机。然后连接到我创建的虚拟机并连接到本地网络。 这是我的代码。

//Create my socket

SOCKET sock;
SOCKADDR_IN sin;
sin.sin_addr.s_addr = inet_addr("127.0.0.1");
sin.sin_family      = AF_INET;
sin.sin_port        = htons(22);
sock = socket(AF_INET,SOCK_STREAM,0);
bind(sock, (SOCKADDR *)&sin, sizeof(sin));

if(connect(sock ,(SOCKADDR *)&sin, sizeof(sin)) <0) 
{
    printf("socket can't connect to the server 192.168.56.101 \n");
}
else
{
    printf("socket succeeded to connect to the server 192.168.56.101 \n");
}

代码看起来很奇怪,不清楚它应该做什么。如果你想建立连接,那么你需要 两个套接字 并且它们通常在不同的进程中。服务器进程正常调用

socket()   // create a socket
bind()     // bind socket to local address and port
listen()   // start listening
accept()   // wait for connection from client and return connected socket
           // communication over the socket
close()

而客户通常会调用

socket()
connect()    // connect to the server
             // communication over the socket
close()

如果客户端想要指定输出端口,它可以选择调用 bind(),但通常没有必要,因为 OS 会自动分配一个临时端口。

上面的代码调用 bind() 然后 connect() 到相同的地址。如果 bind() 成功,则没有任何内容在侦听此地址,并且 connect() 显然失败。