c - C 中的示例 linux 服务器对 IE10 没有响应

标签 c linux internet-explorer sockets

我正在学习在 Linux 中使用套接字进行基本的网络编程。我写了一个示例程序如下:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#define SERVER_PORT 9000

unsigned int client_s;
int main(int argc, char *argv[])
{
unsigned int    server_s = 0;       ///server socket
struct sockaddr_in server_addr;     /// server address
struct sockaddr_in client_addr;     ///client address
struct in_addr  client_pi_addr;     /// client ip address

int addr_len;           /// internet address length

unsigned int    ids;        ///thread arguments

/// create a new socket
server_s = socket(AF_INET, SOCK_STREAM, 0);
if( !server_s)
    return -1;

server_addr.sin_family  = AF_INET;      /// internet
server_addr.sin_port    = htons(SERVER_PORT);       /// host to network string : port 9000
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);    /// listen on any (all) addresses, host to network long

/// bind it
if (bind(server_s, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0 )
    return -2;

/// listen over it

if( listen(server_s, 100) < 0 ) /// 100 : backlog
{
    perror("Error in listen");
}

while (1)
{

    addr_len = sizeof(client_addr);
    client_s = accept(server_s, (struct sockaddr *)&client_addr, &addr_len);

    if(client_s < 0)
    {
        perror("Error accepting connection");
        exit(-1);
    }
    else
    {

        ids = client_s;

        char outbuf[128];

            strcpy(outbuf, "HTTP/1.1 200 OK\nContent-Type:text/html\n\n");
            if( send(client_s, outbuf, strlen(outbuf), 0) < 0 )
                    perror("ERROR in send");
            if( send(client_s, "OKIE", 4, 0) < 0 )
                    perror("Error in sending oK : ");
        close(client_s);
    }   
}
close (server_s);
return 0;
}

现在,当我在 IP:9000 上使用 Chrome 进行查询时,我在浏览器中得到的预期响应为“OKIE”。 但是当我尝试在 Internet Explorer 10 中执行相同操作时,没有任何响应。 IE 报告此页面无法显示。

任何解释都会很有帮助。

出于好奇,我发布了这个问题。如果完全没有意义,请随时关闭此问题:)。

最佳答案

在我看来这是与 IE 相关的问题 - 它只是不显示内容,没有很好的 header (我的意思是不仅列出了 Content-Type header )和有效的 html(“OKie”-不是“内容类型:文本/html”)。我认为将 Content-Type 更改为 text/plain 可能会针对 IE 修复它。

关于c - C 中的示例 linux 服务器对 IE10 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19088150/

相关文章:

linux - 进程卡在退出,显示为僵尸但无法收割

c++ - 预处理器定义重复

c++ - 在 Ubuntu 12.04 上链接 - 对 `clock_gettime@GLIBC_2.17' 的 undefined reference

linux - 使用 SSH 的调用命令失败?

jQuery 在 IE 中第二遍时未命中 MVC Controller

html - 自定义选择框在 IE 中无法正常工作

html - CSS 垂直对齐 anchor 在 li 内 - IE8/IE9 问题

c - 我如何修复显示的超出文件大小限制的消息

c - 如果发生运行时错误,为什么会返回垃圾值?

c - 如何从十六进制值中提取低位字节?