Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
я был бы рад если бы мне показывали такие примеры, когда я начинал изучать программирование. Суть примера — показать что такое Socket, Server Socket, Stream, и Thread
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Socket;
use FCGI::ProcManager qw/ pm_manage pm_pre_dispatch pm_post_dispatch /;
# Prepare content and headers
my $content = join "", map { $_ } <DATA>;
my $headers ="HTTP/1.1 200 OK\r\n"
. "Server: FlaresunsFakeServer/2009-09-10\r\n"
. "Content-Type: text/html\r\n"
. "Content-Length: " . length($content). "\r\n"
. "Connection: close\r\n\r\n";
# Prepare and open socket
my $sock = new LWP::Socket();
$sock->bind('127.0.0.1', '8080');
# Set up listen queue for socket
$sock->listen(10);
# Create 5 childs
pm_manage(n_processes => 5);
# Accepts a new connection
while ( my $socket = $sock->accept(10) ) {
pm_pre_dispatch();
$socket->write($headers);
$socket->write($content);
$socket->shutdown();
pm_post_dispatch();
}
$sock->shutdown();
__DATA__
<html>
<head><title>Hi</tiltle></head>
<body>
<h1>Hello from Habr</h1>
<body>
</html>
насколько я понимаю это многопоточный не асинхронный сервер получается…Что значит «не асинхронный»?
using System;
using System.IO;
using System.Net;
namespace ConsoleApplication7 {
class Program {
private static HttpListener _listener;
static void Main(string[] args) {
_listener = new HttpListener();
_listener.Prefixes.Add("http://localhost:88/");
_listener.Start();
while (true)
{
IAsyncResult asyncResult = _listener.BeginGetContext(Callback, null);
asyncResult.AsyncWaitHandle.WaitOne();
}
}
private static void Callback(IAsyncResult ar)
{
HttpListenerContext context = _listener.EndGetContext(ar);
using(var sw = new StreamWriter(context.Response.OutputStream))
{
sw.WriteLine("hello world");
}
}
String response = "HTTP/1.1 200 OK\r\n" +
"Server: YarServer/2009-09-09\r\n" +
"Content-Type: text/html\r\n" +
"Content-Length: " + s.length() + "\r\n" +
"Connection: close\r\n\r\n";
Хотя я бы никогда и ни кому не посоветовал бы использовать com.sun.net.httpserver, ни для каких целей вообще, есть вещи которые отмирают, это мертвый код, который абсолютно бесполезен, даже с точки зрения обучения.
HTTP сервер за 15 минут