#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
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.