socket无法连接到localhost

时间:2015-02-17 10:50:50

标签: sockets localhost

我在Windows 8.1下编写此代码。我想先将我的套接字连接到localhost。然后连接到我创建的虚拟机并连接到本地网络。 这是我的代码。

//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");
}

1 个答案:

答案 0 :(得分:0)

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

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(),但通常不需要,因为操作系统会自动分配一个临时端口。

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