繁体   English   中英

使用Windows 10和C的套接字编程(Visual Studio 2015)

[英]Socket programming using Windows 10 and C (Visual Studio 2015)

我使用Windows 10和C(Visual Studios 2015)编写了套接字服务器代码,但我认为绑定或监听代码是错误的。

当我执行代码时,它不会等到客户端连接成功。 在打印出“ winsock初始化成功”和“创建套接字成功”之后完成。

请帮帮我。


#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[]) {

    WSADATA wsaData;

    struct sockaddr_in address_of_server;
    struct sockaddr_in address_of_client;

    int socket_of_client;
    int size_of_address_of_client = sizeof(address_of_client);

    if (WSAStartup(MAKEWORD(2, 2), &wsaData) == 0) {
        printf("winsock initialization success\n");
    }
    else {
        printf("winsock initialization failure\n");
    }

    SOCKET socket_of_server = socket(AF_INET, SOCK_STREAM, 0);

    if (socket_of_server == -1) {
        printf("creating socket failure\n");
    }
    else {
        printf("creating socket success\n");
    }

    memset(&address_of_server, 0, sizeof(address_of_server));
    address_of_server.sin_family = AF_INET;
    address_of_server.sin_addr.s_addr = htonl(INADDR_ANY);
    address_of_server.sin_port = htons(atoi(10000));

    bind(socket_of_server, (struct sockaddr*)&address_of_server, sizeof(address_of_server));

    listen(socket_of_server, 5);

    socket_of_client = accept(socket_of_server, (struct sockaddr*)&address_of_client, &size_of_address_of_client);

    WSACleanup();

}

在listen()之后,您需要调用accept()以获取新的连接套接字。 listen()只是开始监听,并且不等待任何客户端连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM