php - Le navigateur ne parvient-il pas à accéder au programme du serveur Socket en tant que client ?
世界只因有你
世界只因有你 2017-05-16 13:03:22
0
1
518

Il est normal d'écrire un programme client socket pour y accéder. Il est également normal d'utiliser telent pour y accéder, mais lorsque le navigateur y accède en tant que client, il signale directement une erreur et n'entre pas dans la boucle while à tout. Pourquoi est-ce?

Accès au navigateur 127.0.0.1:8899
Le programme serveur s'est arrêté directement et a signalé une erreur : erreur de segmentation (core dumped)

Le code du serveur ressemble probablement à ceci

int main(int argc, char *argv[]){
    
    si(argc != 2){
        err_msg("Utilisation : ./studyHttpd <adresse IP>\n");
    }

    struct sockaddr_in serveur_sock, client_sock ;
    int sockfd, client_fd;
    int sin_size;
    pthread_tntid;
    
    if(-1 == (sockfd = socket(AF_INET, SOCK_STREAM, 0))) err_exit("socket");
    printf("ID de socket = %d\n", sockfd);

    serveur_sock.sin_family = AF_INET ;
    server_sock.sin_port = htons(PORT);
    server_sock.sin_addr.s_addr = INADDR_ANY ;
    bzero(&(server_sock.sin_zero), 8);

    int je = 1;
    setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
    
    if(-1 == bind(sockfd, (struct sockaddr *)&server_sock, sizeof(struct sockaddr))) err_exit("bind");
    printf("Liaison réussie\n");

    if(-1 == écouter(sockfd, MAX_QUE_CONN_NM)) err_exit("écouter");
    printf("Port d'écoute = %d\n", PORT);

    sin_size = sizeof(client_sock);

    /*Le navigateur n'exécutera pas du tout cette étape, les autres clients fonctionneront normalement*/

    tandis que(1){
        if(-1 == (client_fd = accept(sockfd, (struct sockaddr *) &client_sock, &sin_size))) err_exit("accepter");

        if(pthread_create(&ntid, NULL, (void *)handle, &client_fd) != 0) err_exit("pthread_create");
    }
    fermer(sockfd);
    renvoie 0 ;
}
世界只因有你
世界只因有你

répondre à tous(1)
过去多啦不再A梦

Le navigateur utilise le protocole http et le socket utilise généralement le protocole tcp/ip

Le protocole http a un en-tête spécial sans lui, bien sûr, il n'est pas accessible

.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal