cari

Rumah  >  Soal Jawab  >  teks badan

c++ - Masalah operasi pelayan web dilaksanakan dalam bahasa c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

void error_handling(char *message);

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

    struct sockaddr_in serv_addr;
    struct sockaddr_in clnt_addr;
    socklen_t clnt_addr_size;

    char message[] = "HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\nentity-body:<html>sdf</html>";
    
    
    if(argc!=2){
        printf("usage: %s <port>\n",argv[0]);
        exit(1);    
    }
    
    serv_sock = socket(PF_INET,SOCK_STREAM,0);
    if(serv_sock == -1)
        error_handling("socket() error");

    memset(&serv_addr, 0 ,sizeof(serv_addr));

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(atoi(argv[1]));

    if(bind(serv_sock,(struct sockaddr*) &serv_addr,sizeof(serv_addr))==-1)error_handling("bind() error");

    if(listen(serv_sock,5)==-1)
        error_handling("listen() error");
    clnt_addr_size = sizeof(clnt_addr);
    clnt_sock = accept(serv_sock,(struct  sockaddr*)&clnt_addr,&clnt_addr_size);

    if(clnt_sock==-1)
        error_handling("accept() error");

    write(clnt_sock,message,sizeof(message));
    close(clnt_sock);
    close(serv_sock);
    return 0;

}
void error_handling(char *message)
{
    fputs(message,stderr);
    fputc('\n',stderr);
    exit(1);
}

Apabila berjalan pada Linux dan mengaksesnya dalam penyemak imbas, anda akan digesa untuk memuat turun fail bin Jika anda menjalankannya pada Win melalui cygwin, anda tidak boleh mengakses pelayan. Tolong beritahu saya cara membuat penyemak imbas menerima html yang dihantar dalam kod

phpcn_u1582phpcn_u15822731 hari yang lalu1246

membalas semua(1)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-06-30 09:59:18

    Ia tidak semestinya masalah dengan program ini. Sebelum menggunakan penyemak imbas, adakah anda telah mencuba telnet atau wget/curl ke port di bawah cygwin untuk melihat sama ada ia tersedia? Malah dalam Linux, akses kepada port di bawah 2048 memerlukan kebenaran daripada pengguna pentadbir.

    balas
    0
  • Batalbalas