我在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");
}
答案 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()
显然会失败。