套接字无法连接到本地主机
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()
显然失败。
我在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()
显然失败。