Difference between revisions of "Networking/es"
Line 18: | Line 18: | ||
=== Ejemplo de Servidor Web === | === Ejemplo de Servidor Web === | ||
− | | + | El código que sigue es un ejemplo de servidor http escrito con Synapse y probado en Mac OS X, después de cambiar los fuentes de Synapse para utilizar una constante fija $20000 como MSG_NOSIGNAL, porque esta constante no estaba presente en la undidas 'Sockets' para Mac OS X. |
<delphi> | <delphi> |
Revision as of 00:13, 23 December 2008
│
Deutsch (de) │
English (en) │
español (es) │
français (fr) │
日本語 (ja) │
한국어 (ko) │
polski (pl) │
português (pt) │
русский (ru) │
slovenčina (sk) │
中文(中国大陆) (zh_CN) │
Trabajando en RED
Esta página será el comienzo para las tutorias sobre la programación para red con Lazarus. No soy un experto en la programación para redes y agregaré al artículo todo lo queaprendo sobre esta cuestión. Invito a otros a que ayuden a crear artículos sobre trabajo en redes. Agregue un enlace en la sección siguiente, agregue una página y cree su propio artículo de WiKi. En esta página se dará información de carácter general .
Otras tutorías sobre trabajo en redes
- Programación segura
- Componentes sobre TCP/IP Sockets
- lNet - Componentes ligeros para trabajo en red
- [[XML Tutorial]|Tutoría XML] - XML se utiliza a menudo en comunicaciones en la red
- FPC y módulos Apache
Protocolo TCP/IP
Ejemplo de Servidor Web
El código que sigue es un ejemplo de servidor http escrito con Synapse y probado en Mac OS X, después de cambiar los fuentes de Synapse para utilizar una constante fija $20000 como MSG_NOSIGNAL, porque esta constante no estaba presente en la undidas 'Sockets' para Mac OS X.
<delphi> {
The Micro Pascal WebServer
This is a very simple example webserver implemented with the Synapse library.
It works with blocking sockets and a single thread, so it can only handle one request at a given time.
It will write the headers that it receives from the browser to the standard output.
It serves a fixed webpage for the / URI For any other URI it will return 504 not found
} program upserver;
{$ifdef fpc}
{$mode delphi}
{$endif}
{$apptype console}
uses
Classes, blcksock, sockets, Synautil, SysUtils;
{@@
Attends a connection. Reads the headers and gives an appropriate response
} procedure AttendConnection(ASocket: TTCPBlockSocket); var
timeout: integer; s: string; method, uri, protocol: string; OutputDataString: string; ResultCode: integer;
begin
timeout := 120000;
WriteLn('Received headers+document from browser:');
//read request line s := ASocket.RecvString(timeout); WriteLn(s); method := fetch(s, ' '); uri := fetch(s, ' '); protocol := fetch(s, ' ');
//read request headers repeat s := ASocket.RecvString(Timeout); WriteLn(s); until s = ;
// Now write the document to the output stream
if uri = '/' then begin // Write the output document to the stream OutputDataString := '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' + ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' + CRLF
+ '<html>
Teste
</html>' + CRLF;
// Write the headers back to the client ASocket.SendString('HTTP/1.0 200' + CRLF); ASocket.SendString('Content-type: Text/Html' + CRLF); ASocket.SendString('Content-length: ' + IntTostr(Length(OutputDataString)) + CRLF); ASocket.SendString('Connection: close' + CRLF); ASocket.SendString('Date: ' + Rfc822DateTime(now) + CRLF); ASocket.SendString('Server: Servidor do Felipe usando Synapse' + CRLF); ASocket.SendString( + CRLF);
// if ASocket.lasterror <> 0 then HandleError;
// Write the document back to the browser ASocket.SendString(OutputDataString); end else ASocket.SendString('HTTP/1.0 504' + CRLF);
end;
var
ListenerSocket, ConnectionSocket: TTCPBlockSocket;
begin
ListenerSocket := TTCPBlockSocket.Create; ConnectionSocket := TTCPBlockSocket.Create;
ListenerSocket.CreateSocket; ListenerSocket.setLinger(true,10); ListenerSocket.bind('0.0.0.0','1500'); ListenerSocket.listen;
repeat if ListenerSocket.canread(1000) then begin ConnectionSocket.Socket := ListenerSocket.accept; WriteLn('Attending Connection. Error code (0=Success): ', ConnectionSocket.lasterror); AttendConnection(ConnectionSocket); end; until false;
ListenerSocket.Free; ConnectionSocket.Free;
end. </delphi>
WebServices
According to the W3C a Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface that is described in a machine-processable format such as WSDL. Other systems interact with the Web service in a manner prescribed by its interface using messages, which may be enclosed in a SOAP envelope, or follow a REST approach. These messages are typically conveyed using HTTP, and are normally comprised of XML in conjunction with other Web-related standards. Software applications written in various programming languages and running on various platforms can use web services to exchange data over computer networks like the Internet in a manner similar to inter-process communication on a single computer. This interoperability (e.g., between Windows and Linux applications) is due to the use of open standards. OASIS and the W3C are the primary committees responsible for the architecture and standardization of web services. To improve interoperability between web service implementations, the WS-I organisation has been developing a series of profiles to further define the standards involved.
Web Service Toolkit for FPC & Lazarus
Web Service Toolkit is a web services package for FPC and Lazarus.