FC2ブログ
--.--
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

04.25
Wed
長らくソケット関連のコードはJavaやらPythonで書いてたのですが、

やはりこの言語でやらなきゃしょうがないということで、

勉強中のCで書いてみました。

自分のためにもコードの解説を残しておこうと思うのですが、

それはまた次回のブログのネタにしようかと思います

環境はUbuntuでgccです。実行させてhttp://localhost/にブラウザでアクセスしてみてください。


#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    struct sockaddr_in mysock;
    struct sockaddr_in resock;
    int mysocket;
    int len = sizeof(mysock);
    int backlog = 5;
    int serverport = 80;
    int closecode;
    char message[] = "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\nhello, browser!";
    mysocket = socket(AF_INET , SOCK_STREAM , IPPROTO_TCP);
    if ( mysocket < 0) {
        perror("socket");
        return 1;
    }else{
        printf("%d" , mysocket);
        mysock.sin_family = AF_INET;
        mysock.sin_port = htons(serverport);
        mysock.sin_addr.s_addr = INADDR_ANY;
        if (bind(mysocket , (struct sockaddr *)&mysock , len) != 0) {
            perror("bind");
            close(mysocket);
            return 1;
        }else{
            listen(mysocket , backlog);
            int resocket = accept(mysocket , (struct sockaddr *)&resock , &len);
            send(resocket , message , sizeof(message)/sizeof(message[0])-1 , 0);
            close(resocket);
            close(mysocket);
        }
    }
    return 0;
}

スポンサーサイト

comment 0 trackback 0
トラックバックURL
http://telracsmoratori.blog.fc2.com/tb.php/110-cc931d9a
トラックバック
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。