mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-08 07:42:33 +01:00
Author:admin
Date:2008-09-19T07:54:43.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@25 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Advanced]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|9229e5c1-165e-add7-6ce2-355dec4544f1]]
|
||||
==Compiling==
|
||||
|
||||
To compile the example, you must compile two projects: ''chat'' and ''join''.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|EiffelNet Samples]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|c9c0fe01-a80f-5834-8503-aad1063e1503]]
|
||||
=Description=
|
||||
|
||||
Here is a set of five examples written thanks to the EiffelNet library to show some basic applications. Two of them rely on specific code to Unix Operating systems and consequently could not be run under Windows.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Polling]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|3bdc742f-2214-c5fb-2336-bc613b721c0d]]
|
||||
==Compiling==
|
||||
|
||||
To compile the example, you must compile two projects: ''client'' and ''server.''
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Predef]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|d9851197-ae39-5e73-9bf3-51d7cb9fa23c]]
|
||||
==Compiling==
|
||||
|
||||
To compile the example, you must compile two projects: ''client'' and ''server.''
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Same Machine]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|d10e1e4b-94c1-2725-f465-79da88730196]]
|
||||
==Compiling==
|
||||
|
||||
To compile the example, you must compile two projects: ''client'' and ''server.''
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Two Machines]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|52307bfe-116d-f5c4-ccf1-98f330ef82e5]]
|
||||
==Compiling==
|
||||
|
||||
To compile the example, you must compile two projects: ''client'' and ''server.''
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Bibliography]]
|
||||
[[Property:weight|10]]
|
||||
[[Property:uuid|739d59a6-c0b0-899f-24cf-5a17655a5512]]
|
||||
[1] Bertrand Meyer: [http://www.eiffel.com/doc/] , Prentice Hall, 1992. (Available from Eiffel Software.)
|
||||
[2] Bertrand Meyer: [http://www.eiffel.com/doc/] , Prentice Hall, 1994. (Available from Eiffel Software.)
|
||||
[3] W. Richard Stevens: ''Unix Network Programming'', Prentice Hall, 1990.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Clients and servers]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|3c1711f8-3aa0-9f3b-c1ce-0cd9324b3e00]]
|
||||
In the client-server model of computing, a number of software systems, the clients, may require general-purpose services provided by other systems, the servers. Clients and servers run concurrently, on the same machine or, more generally, on different machines connected through a network.
|
||||
|
||||
Typically, the clients are systems, for example systems that provide useful facilities for human users; the servers take care of operations that clients could not perform on their own (or would perform less efficiently), and of operations that are common to several clients. Example of servers include:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Event-driven command execution]]
|
||||
[[Property:weight|8]]
|
||||
[[Property:uuid|66036773-3e41-2877-7fa4-e0601558fc7c]]
|
||||
{| border="1"
|
||||
|-
|
||||
| The example classes discussed in this section appear in the subdirectory ''polling ''of the example directory
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[[Property:title|EiffelNet]]
|
||||
[[Property:link_title|EiffelNet Tutorial]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|09679e98-4d5c-d2af-439b-00b28c6cfe4b]]
|
||||
* [[What is EiffelNet|Introduction]]
|
||||
* [[Clients and servers|Clients and server]]
|
||||
* [[An overview of EiffelNet Mechanisms|An overview of EiffelNet mechanisms]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Introduction to the examples]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|3d9d54ab-0324-d8d4-ae32-f5379f2fc721]]
|
||||
The following sections describe a set of examples showing how to use EiffelNet to build client-server applications.
|
||||
|
||||
The examples start with the most simple uses involving high-level classes covering common cases and shielding developers from details of the mechanism. Subsequent examples will reveal some of these details, useful for more advanced or specific applications of EiffelNet.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|A more complex example]]
|
||||
[[Property:weight|9]]
|
||||
[[Property:uuid|a57bbf5b-d877-8a50-1bca-92848868bdec]]
|
||||
{| border="1"
|
||||
|-
|
||||
| The example classes discussed in this section appear in the subdirectory ''advanced ''of the example directory
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[[Property:title|Obtaining a finer degree of control]]
|
||||
[[Property:link_title|]]
|
||||
[[Property:weight|6]]
|
||||
[[Property:uuid|9e2de24b-8ae3-5b57-9797-e163defe83d9]]
|
||||
Let us now take a more internal look at the workings of EiffelNet. The two examples that follow have the same behavior as the preceding one; since their text is less simple, they are only interesting as an illustration of the lower-level facilities that you may want to use in specific cases. If you are already familiar with socket programming, they will also give you a more precise idea of how EiffelNet encapsulates the basic socket mechanisms.
|
||||
|
||||
As before, we have a client and a server class, still called <code>OUR_CLIENT</code> and <code>OUR_SERVER</code>, which are part of two different systems and will run concurrently. The communication uses streams rather than datagrams; the datagram form of communication will be examined in section [[Using datagram sockets|using datagram sockets]] .
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|An overview of EiffelNet Mechanisms]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|08d7ca19-65e3-7f35-fbce-a50d0aedf626]]
|
||||
To enable clients and servers to exchange objects, you will have to ensure that they can refer to a common '''address'''. At the predefined level this is really the only notion that you need to know, although it is useful to get the bigger picture, in particular the concept of '''socket '''(which enables systems to set up communication channels), the various forms of communication (single-machine versus multi-machine, stream versus datagram), the kinds of object structure that may be exchanged, the notion of packet, and how to associate commands with communication events. The following paragraphs review these ideas and the corresponding EiffelNet abstractions.
|
||||
|
||||
===Establishing a common address===
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Using datagram sockets]]
|
||||
[[Property:weight|7]]
|
||||
[[Property:uuid|ba27b7dd-77db-7f6f-9b8c-2a3111d9d432]]
|
||||
{| border="1"
|
||||
|-
|
||||
| The example classes discussed in this section appear in the subdirectory ''datagram ''of the example directory
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|What is EiffelNet]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|bf6d5904-9df8-451a-2ef9-0eee1200b60f]]
|
||||
===What is EiffelNet?===
|
||||
|
||||
The client-server model of computing is quickly gaining ground as a way of optimizing network resources and of building sophisticated and flexible transactional applications.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[[Property:title|EiffelNet Library]]
|
||||
[[Property:link_title|EiffelNet]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|80fbd984-da52-b573-6282-33f499d67ab5]]
|
||||
Type: Library <br/>
|
||||
Platform: Any <br/>
|
||||
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
[[Property:uuid|4ddb235c-fea6-ee00-05af-6493e2c652a7]]
|
||||
== Network communication ==
|
||||
|
||||
* EiffelNet http://ise181.ise/book/documentation/eiffelnet-library
|
||||
** EiffelNet tutorial http://ise181.ise/book/documentation/eiffelnet
|
||||
* [[EiffelNet Library|EiffelNet]]
|
||||
** [[EiffelNet|EiffelNet tutorial]]
|
||||
** EiffelNet class reference
|
||||
** EiffelNet samples http://ise181.ise/book/documentation/eiffelnet-samples
|
||||
** [[EiffelNet Samples|EiffelNet samples]]
|
||||
* cURL library
|
||||
|
||||
|
||||
Reference in New Issue
Block a user