Vous êtes sur la page 1sur 75

Abstract

The aim of this project is to design, develop and implementation a voice chat application using a visual basic 6.0. This application allows a multiple users to chat with one other through network connection. Secured chat and file transfer is encouraging new ways of working from home, collaboration and information sharing in many industries. This project describes the basic networking functions, components, and signaling protocols in Vo ! networks. t e"plores the ramifications of deploying Vo ! as well as the service considerations that drive specific e#uipment and technology choices. nstant messaging typically boosts communication and allows easy collaboration. n contrast to e$mails or phone, the parties know whether the peer is available. %n the other hand, people are not forced to reply immediately to incoming messages. This way, communication via instant messaging can be less intrusive than communication via phone, which is partly a reason why instant messaging is becoming more and more important in corporate environments. &oreover, we may do this with use of security, authentication and encryption technologies, depending on the re#uirements. n this project we can retrieve individual details of the flight which will be displayed in specific format. Some more types of data retrieval can also be done. 'ere the details can be viewed using menu option in &( form.

INTRODUCTION There are several ways to e"ecute a process on other computers or other application domains which are related to each other through a network )*+, or nternet-. .emote e"ecuting means running a process in another computer without using any resource or /!0 load in the local computer. 0sing a client1server application is the only solution for doing so. 2e can create and use such applications in a wide range of platforms and methodologies by using .,3T .emoting which is built on the .,3T 4ramework technology. + managed object can be accessed by a remote client. 2hen a client makes a call to an object of the server program, a pro"y object grabs the call first. The pro"y object behaves like the remote object, e"cept that the pro"y object is running locally. .emoting allows calling methods and passing objects across +pplication (omains. 2e need to create our own method of cross$application communication. 2e have an object that needs to accept calls from client applications across 'TT!. 4irst, we5d need to define our object6s location as a 0.* of some kind. Then we would need to choose a port that the object should listen to. 2e would also need some way of publishing the interface of our object so that clients would know what methods are available to call, and we would need a method of describing the interface and handling the messaging between objects. The creators of the .,3T 4ramework have done just that and have e"posed the remoting functionality as a powerful way for programmers to start getting their applications to communicate. Server The remote object needs a server process where it will be instantiated. This server has to create a channel and put it into listening mode so that clients can connect to this channel. 2hen the client connects to the remote object it needs to know the 0. of the object, that is, the name of the host where the remote object is running, the protocol and port number to connect to, the name of the server, and the name of the remote object. Such a connection string can look like this7

tcp711localhost780001SimpleServer1&y.emote%bject The server is implemented in a console application. .emoting /onfiguration configures the server and activate the channel. The creation of the remote object and communication with the client is done by the remoting infrastructure9 we just have to make sure that the process doesn5t end. 2e do this with /onsole Client The client specify the 0.* of the server using tcp711hostname7port1application. n this e"ample, the server runs on local host with the port number 8000. The application name of the server is defined with the name attribute of the :application; element in the server configuration file. The :well$known; element specifies the remote object we want to access. The type attribute defines the type of the remote object and the assembly. The 0.* attribute defines the path to the remote object. +lthough Voice over ! )Vo !- has e"isted for several years, it has only recently begun to take off as a viable alternative to traditional public switched telephone networks )!ST,-. nterest in Vo ! has grown in part because the technology can help organi<ations reduce costs by using a single ! network to support both data and voice applications. =ut cost is not the only factor driving Vo !6s growth. Service providers are also attracted by Vo !6s revenue potential. %perators can use their Vo ! networks to rapidly deploy new value$added and high$margin applications and services. %rgani<ations can choose from a variety of e#uipment and networking protocols to implement their Vo ! solution. >ust as in data networking, identifying the appropriate e#uipment and technology for the Vo ! network depends heavily on an organi<ation6s business and technical re#uirements. This paper describes the basic networking functions, components, and signaling protocols in Vo ! networks. t e"plores the ramifications of deploying Vo ! as well as the service considerations that drive specific e#uipment and technology choices. This paper is intended to provide organi<ations with a general understanding of Vo !, so that they will be better prepared to solve the more comple" issues associated with deploying a secure and assured Vo ! network. Vo ! )or nternet telephony which is almost the same thing- is any one of several technologies that allow you to make phone calls over the nternet instead of over the telephone network. Some more advanced and secure systems use a

private data network instead of the nternet. This technology has been around since the ?8@0s but hasn5t been practical until recently because for it to be effective you need a broadband1high$speed connection. Specifically you need a bit more than ?00kbps per connection using modern Vo ! transmission technologies. This has only recently become common among residential broadband subscribers. That kind of bandwidth has been available in businesses for longer and technology is already well established in the business market

1.2 SYSTEM CONFIGURATION


1.2.1 HARDWARE CONFIGURATION: &other board !rocessor .+& 'ard disk 4loppy disk &onitor Heyboard &ouse !ort !rinter 7 7 7 7 7 7 7 7 7 7 ntel ABC D= !entium V C?E &= A0D= )&+F- )&in B0?.BB &= ?C GSamsung ?0A keys *ogitech E Serial *aser )'! !rinter-

1.2.2 SOFTWARE CONFIGURATION: 4ront end %perating System 7 7 V=.,3T 2 ,(%2S F!

1.2.3 SOFTWARE OVERVIEW:

OVERVIEW OF TECHNOLOGIES USED

3.1 Front End Technology !cro"o#t .NET Fr$%e&or'


The .,3T 4ramework is a new computing platform that simplifies application development in the highly distributed environment of the 4ramework is designed to fulfill the following objectives7

nternet. The .,3T

To provide a consistent object$oriented programming environment whether object

code is stored and e"ecuted locally, e"ecuted locally but nternet$distributed, or e"ecuted remotely.

To provide a code$e"ecution environment that minimi<es software deployment To provide a code$e"ecution environment that guarantees safe e"ecution of code, To provide a code$e"ecution environment that eliminates the performance To make the developer e"perience consistent across widely varying types of To build all communication on industry standards to ensure that code based on the

and versioning conflicts.

including code created by an unknown or semi$trusted third party.

problems of scripted or interpreted environments.

applications, such as 2indows$based applications and 2eb$based applications.

.,3T 4ramework can integrate with any other code. The .,3T 4ramework has two main components7 the common language runtime and the .,3T 4ramework class library. The common language runtime is the foundation of the .,3T 4ramework. Iou can think of the runtime as an agent that manages code at e"ecution time, providing core services such as memory management, thread management, and remoting , while also enforcing strict type safety and other forms of code accuracy that ensure security and robustness. n fact, the concept of code management is a fundamental principle of the runtime. /ode that targets the runtime is known as managed code, while code that does not target the runtime is known as unmanaged code. The class library, the other main component of the .,3T 4ramework, is a comprehensive, object$oriented collection of reusable types that you can use to develop applications ranging from traditional command$line or graphical user interface

)D0 - applications to applications based on the latest innovations provided by +S!.,3T, such as 2eb 4orms and F&* 2eb services. The .,3T 4ramework can be hosted by unmanaged components that load the common language runtime into their processes and initiate the e"ecution of managed code, thereby creating a software environment that can e"ploit both managed and unmanaged features. The .,3T 4ramework not only provides several runtime hosts, but also supports the development of third$party runtime hosts. 4or e"ample, +S!.,3T hosts the runtime to provide a scalable, server$side environment for managed code. +S!.,3T works directly with the runtime to enable 2eb 4orms applications and F&* 2eb services, both of which are discussed later in this topic. nternet 3"plorer is an e"ample of an unmanaged application that hosts the runtime )in the form of a & &3 type e"tension-. 0sing nternet 3"plorer to host the runtime enables you to embed managed components or 2indows 4orms controls in 'T&* documents. 'osting the runtime in this way makes managed mobile code )similar to &icrosoftJ +ctiveFJ controls- possible, but with significant improvements that only managed code can offer, such as semi$trusted e"ecution and secure isolated file storage. The following illustration shows the relationship of the common language runtime and the class library to your applications and to the overall system. The illustration also shows how managed code operates within a larger architecture. Features of the Common Language Runtime The common language runtime manages memory, thread e"ecution, code e"ecution, code safety verification, compilation, and other system services. These features are intrinsic to the managed code that runs on the common language runtime. 2ith regards to security, managed components are awarded varying degrees of trust, depending on a number of factors that include their origin )such as the nternet, enterprise network, or local computer-. This means that a managed component might or might not be able to perform file$access operations, registry$access operations, or other sensitive functions, even if it is being used in the same active application. The runtime enforces code access security. 4or e"ample, users can trust that an e"ecutable embedded in a 2eb page can play an animation on screen or sing a song, but cannot access their personal data, file system, or network. The security features of the

runtime thus enable legitimate nternet$deployed software to be e"ceptionally featuring rich. The runtime also enforces code robustness by implementing a strict type$ and code$ verification infrastructure called the common type system )/TS-. The /TS ensures that all managed code is self$describing. The various &icrosoft and third$party language compilers generate managed code that conforms to the /TS. This means that managed code can consume other managed types and instances, while strictly enforcing type fidelity and type safety. n addition, the managed environment of the runtime eliminates many common software issues. 4or e"ample, the runtime automatically handles object layout and manages references to objects, releasing them when they are no longer being used. This automatic memory management resolves the two most common application errors, memory leaks and invalid memory references. The runtime also accelerates developer productivity. 4or e"ample, programmers can write applications in their development language of choice, yet take full advantage of the runtime, the class library, and components written in other languages by other developers. +ny compiler vendor who chooses to target the runtime can do so. *anguage compilers that target the .,3T 4ramework make the features of the .,3T 4ramework available to e"isting code written in that language, greatly easing the migration process for e"isting applications. 2hile the runtime is designed for the software of the future, it also supports software of today and yesterday. nteroperability between managed and unmanaged code enables developers to continue to use necessary /%& components and (**s. The runtime is designed to enhance performance. +lthough the common language runtime provides many standard runtime services, managed code is never interpreted. + feature called just$in$time )> T- compiling enables all managed code to run in the native machine language of the system on which it is e"ecuting. &eanwhile, the memory manager removes the possibilities of fragmented memory and increases memory locality$of$reference to further increase performance. 4inally, the runtime can be hosted by high$performance, server$side applications, such as &icrosoftJ SK* ServerL and nternet nformation Services ) S-. This infrastructure enables you to use managed code to write your business logic, while still

enjoying the superior performance of the industry5s best enterprise servers that support runtime hosting. .NET Framework Class Library The .,3T 4ramework class library is a collection of reusable types that tightly integrate with the common language runtime. The class library is object oriented, providing types from which your own managed code can derive functionality. This not only makes the .,3T 4ramework types easy to use, but also reduces the time associated with learning new features of the .,3T 4ramework. n addition, third$party components can integrate seamlessly with classes in the .,3T 4ramework. 4or e"ample, the .,3T 4ramework collection classes implement a set of interfaces that you can use to develop your own collection classes. Iour collection classes will blend seamlessly with the classes in the .,3T 4ramework. +s you would e"pect from an object$oriented class library, the .,3T 4ramework types enable you to accomplish a range of common programming tasks, including tasks such as string management, data collection, database connectivity, and file access. n addition to these common tasks, the class library includes types that support a variety of speciali<ed development scenarios. 4or e"ample, you can use the .,3T 4ramework to develop the following types of applications and services7

/onsole applications. Scripted or hosted applications. 2indows D0 applications )2indows 4orms-. +S!.,3T applications. F&* 2eb services. 2indows services.

4or e"ample, the 2indows 4orms classes are a comprehensive set of reusable types that vastly simplify 2indows D0 development. f you write an +S!.,3T 2eb 4orm application, you can use the 2eb 4orms classes. Client Application De elopment /lient applications are the closest to a traditional style of application in 2indows$based programming. These are the types of applications that display windows or forms on the desktop, enabling a user to perform a task. /lient applications include applications such

as word processors and spreadsheets, as well as custom business applications such as data$entry tools, reporting tools, and so on. /lient applications usually employ windows, menus, buttons, and other D0 elements, and they likely access local resources such as the file system and peripherals such as printers. +nother kind of client application is the traditional +ctiveF control )now replaced by the managed 2indows 4orms control- deployed over the nternet as a 2eb page. This application is much like other client applications7 it is e"ecuted natively, has access to local resources, and includes graphical elements. n the past, developers created such applications using /1/MM in conjunction with the &icrosoft 4oundation /lasses )&4/- or with a rapid application development ).+(environment such as &icrosoftJ Visual =asicJ. The .,3T 4ramework incorporates aspects of these e"isting products into a single, consistent development environment that drastically simplifies the development of client applications. The 2indows 4orms classes contained in the .,3T 4ramework are designed to be used for D0 development. Iou can easily create command windows, buttons, menus, toolbars, and other screen elements with the fle"ibility necessary to accommodate shifting business needs. 4or e"ample, the .,3T 4ramework provides simple properties to adjust visual attributes associated with forms. n some cases the underlying operating system does not support changing these attributes directly, and in these cases the .,3T 4ramework automatically recreates the forms. This is one of many ways in which the .,3T 4ramework integrates the developer interface, making coding simpler and more consistent. 0nlike +ctiveF controls, 2indows 4orms controls have semi$trusted access to a user5s computer. This means that binary or natively e"ecuting code can access some of the resources on the user5s system )such as D0 elements and limited file access- without being able to access or compromise other resources. =ecause of code access security, many applications that once needed to be installed on a user5s system can now be safely deployed through the 2eb. Iour applications can implement the features of a local application while being deployed like a 2eb page. !er er Application De elopment Server$side applications in the managed world are implemented through runtime hosts. 0nmanaged applications host the common language runtime, which allows your custom

managed code to control the behavior of the server. This model provides you with all the features of the common language runtime and class library while gaining the performance and scalability of the host server. The following illustration shows a basic network schema with managed code running in different server environments. Servers such as S and SK* Server can perform standard operations while your application logic e"ecutes through the managed code. Server !i"e #$n$%e" &'"e +S!.,3T is the hosting environment that enables developers to use the .,3T 4ramework to target 2eb$based applications. 'owever, +S!.,3T is more than just a runtime host9 it is a complete architecture for developing 2eb sites and nternet$ distributed objects using managed code. =oth 2eb 4orms and F&* 2eb services use S and +S!.,3T as the publishing mechanism for applications, and both have a collection of supporting classes in the .,3T 4ramework. F&* 2eb services, an important evolution in 2eb$based technology, are distributed, server$side application components similar to common 2eb sites. 'owever, unlike 2eb$based applications, F&* 2eb services components have no 0 and are not targeted for browsers such as nternet 3"plorer and ,etscape ,avigator. nstead, F&* 2eb services consist of reusable software components designed to be consumed by other applications, such as traditional client applications, 2eb$based applications, or even other F&* 2eb services. +s a result, F&* 2eb services technology is rapidly moving application development and deployment into the highly distributed environment of the nternet. f you have used earlier versions of +S! technology, you will immediately notice the improvements that +S!.,3T and 2eb 4orms offers. 4or e"ample, you can develop 2eb 4orms pages in any language that supports the .,3T 4ramework. n addition, your code no longer needs to share the same file with your 'TT! te"t )although it can continue to do so if you prefer-. 2eb 4orms pages e"ecute in native machine language because, like any other managed application, they take full advantage of the runtime. n contrast, unmanaged +S! pages are always scripted and interpreted. +S!.,3T pages are faster, more functional, and easier to develop than unmanaged +S! pages because they interact with the runtime like any managed application.

The .,3T 4ramework also provides a collection of classes and tools to aid in development and consumption of F&* 2eb services applications. F&* 2eb services are built on standards such as S%+! )a remote procedure$call protocol-, F&* )an e"tensible data format-, and 2S(* ) the 2eb Services (escription *anguage-. The .,3T 4ramework is built on these standards to promote interoperability with non$ &icrosoft solutions. 4or e"ample, the 2eb Services (escription *anguage tool included with the .,3T 4ramework S(H can #uery an F&* 2eb service published on the 2eb, parse its 2S(* description, and produce /N or Visual =asic source code that your application can use to become a client of the F&* 2eb service. The source code can create classes derived from classes in the class library that handle all the underlying communication using S%+! and F&* parsing. +lthough you can use the class library to consume F&* 2eb services directly, the 2eb Services (escription *anguage tool and the other tools contained in the S(H facilitate your development efforts with the .,3T 4ramework. f you develop and publish your own F&* 2eb service, the .,3T 4ramework provides a set of classes that conform to all the underlying communication standards, such as S%+!, 2S(*, and F&*. 0sing those classes enables you to focus on the logic of your service, without concerning yourself with the communications infrastructure re#uired by distributed software development. 4inally, like 2eb 4orms pages in the managed environment, your F&* 2eb service will run with the speed of native machine language using the scalable communication of S. A&tive Server ($%e!.NET +S!.,3T is a programming framework built on the common language runtime that can be used on a server to build powerful 2eb applications. +S!.,3T offers several important advantages over previous 2eb development models7

En)$n&e" (er*'r#$n&e. +S!.,3T is compiled common language runtime code

running on the server. 0nlike its interpreted predecessors, +S!.,3T can take advantage of early binding, just$in$time compilation, native optimi<ation, and caching services right out of the bo". This amounts to dramatically better performance before you ever write a line of code.

W'rl" Cl$!! T''l S+,,'rt. The +S!.,3T framework is complemented by a

rich toolbo" and designer in the Visual Studio integrated development environment. 2IS 2ID editing, drag$and$drop server controls, and automatic deployment are just a few of the features this powerful tool provides.

('-er $n" Fle.i/ilit0. =ecause +S!.,3T is based on the common language

runtime, the power and fle"ibility of that entire platform is available to 2eb application developers. The .,3T 4ramework class library, &essaging, and (ata +ccess solutions are all seamlessly accessible from the 2eb. +S!.,3T is also language$independent, so you can choose the language that best applies to your application or partition your application across many languages. 4urther, common language runtime interoperability guarantees that your e"isting investment in /%&$based development is preserved when migrating to +S!.,3T.

Si#,li&it0. +S!.,3T makes it easy to perform common tasks, from simple form

submission and client authentication to deployment and site configuration. 4or e"ample, the +S!.,3T page framework allows you to build user interfaces that cleanly separate application logic from presentation code and to handle events in a simple, Visual =asic $ like forms processing model. +dditionally, the common language runtime simplifies development, with managed code services such as automatic reference counting and garbage collection.

M$n$%e$/ilit0. +S!.,3T employs a te"t$based, hierarchical configuration

system, which simplifies applying settings to your server environment and 2eb applications. =ecause configuration information is stored as plain te"t, new settings may be applied without the aid of local administration tools. This O<ero local administrationO philosophy e"tends to deploying +S!.,3T 4ramework applications as well. +n +S!.,3T 4ramework application is deployed to a server simply by copying the necessary files to the server. ,o server restart is re#uired, even to deploy or replace running compiled code.

S&$l$/ilit0 $n" Av$il$/ilit0. +S!.,3T has been designed with scalability in

mind, with features specifically tailored to improve performance in clustered and multiprocessor environments. 4urther, processes are closely monitored and managed by the +S!.,3T runtime, so that if one misbehaves )leaks, deadlocks-, a new process can be created in its place, which helps keep your application constantly available to handle re#uests.

C+!t'#i1$/ilit0

$n"

E.ten!i/ilit0.

+S!.,3T

delivers

well$factored

architecture that allows developers to Oplug$inO their code at the appropriate level. n fact, it is possible to e"tend or replace any subcomponent of the +S!.,3T runtime with your own custom$written component. mplementing custom authentication or state services has never been easier.

Se&+rit0. 2ith built in 2indows authentication and per$application configuration,

you can be assured that your applications are secure. Language !upport The &icrosoft .,3T !latform currently offers built$in support for three languages7 /N, Visual =asic, and >script .

W)$t i! AS(.NET We/ F'r#!2 The +S!.,3T 2eb 4orms page framework is a scalable common language runtime programming model that can be used on the server to dynamically generate 2eb pages. ntended as a logical evolution of +S! )+S!.,3T provides synta" compatibility with e"isting pages-, the +S!.,3T 2eb 4orms framework has been specifically designed to address a number of key deficiencies in the previous model. n particular, it provides7

The ability to create and use reusable 0 controls that can encapsulate common The ability for developers to cleanly structure their page logic in an orderly The ability for development tools to provide strong 2IS 2ID design support

functionality and thus reduce the amount of code that a page developer has to write.

fashion )not Ospaghetti codeO-.

for pages )e"isting +S! code is opa#ue to tools-. +S!.,3T 2eb 4orms pages are te"t files with an .asp" file name e"tension. They can be deployed throughout an S virtual root directory tree. 2hen a browser client re#uests .asp" resources, the +S!.,3T runtime parses and compiles the target file into a .,3T 4ramework class. This class can then be used to dynamically process incoming

re#uests. ),ote that the .asp" file is compiled only the first time it is accessed9 the compiled type instance is then reused across multiple re#uests-. +n +S!.,3T page can be created simply by taking an e"isting 'T&* file and changing its file name e"tension to .asp" )no modification of code is re#uired-. 4or e"ample, the following sample demonstrates a simple 'T&* page that collects a user5s name and category preference and then performs a form post back to the originating page when a button is clicked7 +S!.,3T provides synta" compatibility with e"isting +S! pages. This includes support for :P P; code render blocks that can be intermi"ed with 'T&* content within an .asp" file. These code blocks e"ecute in a top$down manner at page render time.

C'"e 3e)in" We/ F'r#! +S!.,3T supports two methods of authoring dynamic pages. The first is the method shown in the preceding samples, where the page code is physically declared within the originating .asp" file. +n alternative approach$$known as the code$behind method$$ enables the page code to be more cleanly separated from the 'T&* content into an entirely separate file. Intr'"+&ti'n t' AS(.NET Server C'ntr'l! n addition to )or instead of- using :P P; code blocks to program dynamic content, +S!.,3T page developers can use +S!.,3T server controls to program 2eb pages. Server controls are declared within an .asp" file using custom tags or intrinsic 'T&* tags that contain a r+n$t45!erver5 attributes value. ntrinsic 'T&* tags are handled by one of the controls in the S0!te#.We/.UI.Ht#lC'ntr'l! namespace. +ny tag that doesn5t e"plicitly map to one of the controls is assigned the type of S0!te#.We/.UI.Ht#lC'ntr'l!.Ht#lGeneri&C'ntr'l. Server controls automatically maintain any client$entered values between round trips to the server. This control state is not stored on the server )it is instead stored within an 6in,+t t0,e45)i""en57 form field that is round$tripped between re#uests-. ,ote also that no client$side script is re#uired.

n addition to supporting standard 'T&* input controls, +S!.,3T enables developers to utili<e richer custom controls on their pages. 4or e"ample, the following sample demonstrates how the 6$!,:$"r't$t'r7 control can be used to dynamically display rotating ads on a page. ?. 0. E. Q. B. C. 6. @. A. +S!.,3T 2eb 4orms pages can target any browser client )there are no script +S!.,3T 2eb 4orms pages provide synta" compatibility with e"isting +S! +S!.,3T server controls provide an easy way to encapsulate common +S!.,3T ships with BC built$in server controls. (evelopers can also use controls +S!.,3T server controls can automatically project both up level and down level +S!.,3T templates provide an easy way to customi<e the look and feel of list +S!.,3T validation controls provide an easy way to do declarative client or library or cookie re#uirements-. pages. functionality. built by third parties. 'T&*. server controls. server data validation. Cr0!t$l Re,'rt! /rystal .eports for Visual =asic .,3T is the standard reporting tool for Visual =asic.,3T9 it brings the ability to create interactive, presentation$#uality content R which has been the strength of /rystal .eports for years R to the .,3T platform. 2ith /rystal .eports for Visual =asic.,3T, you can host reports on 2eb and 2indows platforms and publish /rystal reports as .eport 2eb Services on a 2eb server. To present data to users, you could write code to loop through record sets and print them inside your 2indows or 2eb application. 'owever, any work beyond basic formatting can be complicated7 consolidations, multiple level totals, charting, and conditional formatting are difficult to program. 2ith /rystal .eports for Visual Studio .,3T, you can #uickly create comple" and professional$looking reports. nstead of coding, you use the /rystal .eport (esigner +S!.,3T 2eb 4orms provide an easy and powerful way to build dynamic 2eb

interface to create and format the report you need. The powerful .eport 3ngine processes the formatting, grouping, and charting criteria you specify. Re,'rt E.,ert! 0sing the /rystal .eport 3"perts, you can #uickly create reports based on your development needs7

/hoose from report layout options ranging from standard reports to form letters, (isplay charts that users can drill down on to view detailed report data. /alculate summaries, subtotals, and percentages on grouped data. Show Top, or =ottom, results of data. /onditionally format te"t and rotate te"t objects.

or build your own report from scratch.


3.2 3AC8 END TECHNO9OGY:

A/'+t Mi&r'!'*t S:9 Server 2;;;


&icrosoft SK* Server is a Structured Kuery *anguage )SK*- based, client1server relational database. 3ach of these terms describes a fundamental part of the architecture of SK* Server. D$t$/$!e + database is similar to a data file in that it is a storage place for data. *ike a data file, a database does not present information directly to a user9 the user runs an application that accesses data from the database and presents it to the user in an understandable format. + database typically has two components7 the files holding the physical database and the database management system )(=&S- software that applications use to access data. The (=&S is responsible for enforcing the database structure, including7 &aintaining the relationships between data in the database. 3nsuring that data is stored correctly and that the rules defining data relationships .ecovering all data to a point of known consistency in case of system failures.

are not violated.

Rel$ti'n$l D$t$/$!e

There are different ways to organi<e data in a database but relational databases are one of the most effective. .elational database systems are an application of mathematical set theory to the problem of effectively organi<ing data. n a relational database, data is collected into tables )called relations in relational theory-. 2hen organi<ing data into tables, you can usually find many different ways to define tables. .elational database theory defines a process, normali<ation, which ensures that the set of tables you define will organi<e your data effectively.

Client<Server: n a client1server system, the server is a relatively large computer in a central location that manages a resource used by many people. 2hen individuals need to use the resource, they connect over the network from their computers, or clients, to the server. 3"amples of servers are7 n a client1server database architecture, the database files and (=&S software reside on a server. + communications component is provided so applications can run on separate clients and communicate to the database server over a network. The SK* Server communication component also allows communication between an application running on the server and SK* Server. Server applications are usually capable of working with several clients at the same time. SK* Server can work with thousands of client applications simultaneously. The server has features to prevent the logical problems that occur if a user tries to read or modify data currently being used by others. 2hile SK* Server is designed to work as a server in a client1server network, it is also capable of working as a stand$alone database directly on the client. The scalability and ease$of$use features of SK* Server allow it to work efficiently on a client without consuming too many resources. Str+&t+re" :+er0 9$n%+$%e =S:9> To work with data in a database, you must use a set of commands and statements )language- defined by the (=&S software. There are several different languages that can be used with relational databases9 the most common is SK*. =oth the +merican ,ational Standards nstitute )+,S - and the nternational Standards %rgani<ation ) S%have defined standards for SK*. &ost modern (=&S products support the 3ntry *evel of SK*$8E, the latest SK* standard )published in ?88E-.

!"L !er er Features &icrosoft SK* Server supports a set of features that result in the following benefits7 Ease of installation# $eployment# an$ use SK* Server includes a set of administrative and development tools that improve your ability to install, deploy, manage, and use SK* Server across several sites. !calability The same database engine can be used across platforms ranging from laptop computers running &icrosoft 2indowsJ 8C18A to large, multiprocessor servers running &icrosoft 2indows ,TJ, 3nterprise 3dition. Data warehousing SK* Server includes tools for e"tracting and analy<ing summary data for online analytical processing )%*+!-. SK* Server also includes tools for visually designing databases and analy<ing data using 3nglish$based #uestions. !ystem integration with other ser er software SK* Server integrates with e$mail, the nternet, and 2indows. Databases + database in &icrosoft SK* Server consists of a collection of tables that contain data, and other objects, such as views, inde"es, stored procedures, and triggers, defined to support activities performed with the data. The data stored in a database is usually related to a particular subject or process, such as inventory information for a manufacturing warehouse. SK* Server can support many databases, and each database can store either interrelated data or data unrelated to that in the other databases. 4or e"ample, a server can have one database that stores personnel data and another that stores product$related data. +lternatively, one database can store current customer order data, and another9 related database can store historical customer orders that are used for yearly reporting. =efore you create a database, it is mportant to understand the parts of a database and how to design these parts to ensure that the database performs well after it is implemented. N'r#$li1$ti'n t)e'r0:

.elations are to be normali<ed to avoid anomalies. n insert, update and delete operations. ,ormali<ation theory is built around the concept of normal forms. + relation is said to be in a particular form if it satisfies a certain specified set if constraints. To decide a suitable logical structure for given database design the concept of normali<ation, which are briefly described below. ?. ?st ,ormal 4orm )? ,.4-7 + relation is said to be in ? ,4 is and only if all unaligned domains contain values only. That is the fields of an n$set should have no group items and no repeating groups. E. End ,ormal 4orm )E ,.4- 7 + relation is said to be in E ,4 is and only if it is in ? ,4 and every non key attribute is fully dependent on primary key. This normal takes care of functional dependencies on non$key attributes. Q. Q rd ,ormal 4orm )Q ,.4- 7 + relation is said to be in Q ,4 is and only if it is in E ,4 and every non key attribute is non transitively dependent on the primary key. This normal form avoids the transitive dependencies on the primary key. B. =oyce code ,ormal 4orm )=/,4- 7 This is a stronger definition than that of ,4. + relation is said to be in =/,4 if and only if every determinant is a /andidate key. C. Bth ,ormal 4orm )B ,4- 7 + relation is said to be in B ,4 if and only if whenever there e"ists a multi valued dependency in a relation say +$;$;= then all of the relation are also functionally dependent on +)i.e. +$;F for all attributes " of the relation.-. 6. Cth ,ormal 4orm )C ,4- %. !rojection >oin ,ormal 4orm )!>,4-7 + relation . is in C ,4 .if and only if every join dependency in . is implied by the candidate key on . . + relation can6t be non$loss split into two tables but can be split into three tables. This is called >oin (ependency.

Mi""le-$re Te&)n'l'%0 A&tive. D$t$ O/?e&t!.Net Overvie+(%.,3T is an evolution of the +(% data access model that directly addresses user re#uirements for developing scalable applications. t was designed specifically for the web with scalability, statelessness, and F&* in mind. +(%.,3T uses some +(% objects, such as the /onnection and /ommand objects, and also introduces new objects. Hey new +(%.,3T objects include the (ataset, (ata .eader, and (ata +dapter.

The important distinction between this evolved stage of +(%.,3T and previous data architectures is that there e"ists an object $$ the (ataset $$ that is separate and distinct from any data stores. =ecause of that, the (ataset functions as a standalone entity. Iou can think of the (ataset as an always disconnected record set that knows nothing about the source or destination of the data it contains. nside a (ataset, much like in a database, there are tables, columns, relationships, constraints, views, and so forth. + (ata +dapter is the object that connects to the database to fill the (ataset. Then, it connects back to the database to update the data there, based on operations performed while the (ataset held the data. n the past, data processing has been primarily connection$based. ,ow, in an effort to make multi$tiered apps more efficient, data processing is turning to a message$based approach that revolves around chunks of information. +t the center of this approach is the (ata +dapter, which provides a bridge to retrieve and save data between a (ataset and its source data store. t accomplishes this by means of re#uests to the appropriate SK* commands made against the data store. The F&*$based (ataset object provides a consistent programming model that works with all models of data storage7 flat, relational, and hierarchical. t does this by having no 5knowledge5 of the source of its data, and by representing the data that it holds as collections and data types. ,o matter what the source of the data within the (ataset is, it is manipulated through the same set of standard +! s e"posed through the (ataset and its subordinate objects. 2hile the (ataset has no knowledge of the source of its data, the managed provider has detailed and specific information. The role of the managed provider is to connect, fill, and persist the (ataset to and from data stores. The %*3 (= and SK* Server .,3T (ata !roviders )System.(ata.%le(b and System.(ata.S#l/lient- that are part of the .,et 4ramework provide four basic objects7 the /ommand, /onnection, (ata .eader and (ata +dapter. n the remaining sections of this document, we5ll walk through each part of the (ataset and the %*3 (=1SK* Server .,3T (ata !roviders e"plaining what they are, and how to program against them. The following sections will introduce you to some objects that have evolved, and some that are new. These objects are7

/onnections. 4or connection to and managing transactions against a database. /ommands. 4or issuing SK* commands against a database.

(ata .eaders. 4or reading a forward$only stream of data records from a SK* (atasets. 4or storing, removing and programming against flat data, F&* data and (ata +dapters. 4or pushing data into a (ataset, and reconciling data against a

Server data source.

relational data.

database. 2hen dealing with connections to a database, there are two different options7 SK* Server .,3T (ata !rovider )System.(ata.S#l/lient- and %*3 (= .,3T (ata !rovider )System.(ata.%le(b-. n these samples we will use the SK* Server .,3T (ata !rovider. These are written to talk directly to &icrosoft SK* Server. The %*3 (= .,3T (ata !rovider is used to talk to any %*3 (= provider )as it uses %*3 (= underneath-. C'nne&ti'n! /onnections are used to 5talk to5 databases, and are represented by provider$specific classes such as SK*/onnection. /ommands travel over connections and result sets are returned in the form of streams which can be read by a (ata .eader object, or pushed into a (ataset object. C'##$n"! /ommands contain the information that is submitted to a database, and are represented by provider$specific classes such as SK*/ommand. + command can be a stored procedure call, an 0!(+T3 statement, or a statement that returns results. Iou can also use input and output parameters, and return values as part of your command synta". The e"ample below shows how to issue an ,S3.T statement against the ,orth wind database. D$t$ Re$"er! The (ata .eader object is somewhat synonymous with a read$only1forward$only cursor over data. The (ata .eader +! supports flat as well as hierarchical data. + (ata .eader object is returned after e"ecuting a command against a database. The format of the returned (ata .eader object is different from a record set. 4or e"ample, you might use the (ata .eader to show the results of a search list in a web page. D$t$!et!

The (ataset object is similar to the +(% .ecord set object, but more powerful, and with one other important distinction7 the (ataset is always disconnected. The (ataset object represents a cache of data, with database$like structures such as tables, columns, relationships, and constraints. 'owever, though a (ataset can and does behave much like a database, it is important to remember that (ataset objects do not interact directly with databases, or other source data. This allows the developer to work with a programming model that is always consistent, regardless of where the source data resides. (ata coming from a database, an F&* file, from code, or user input can all be placed into (ataset objects. Then, as changes are made to the (ataset they can be tracked and verified before updating the source data. The Det /hanges method of the (ataset object actually creates a second (ataset that contains only the changes to the data. This (ataset is then used by a (ata +dapter )or other objects- to update the original data source. The (ataset has many F&* characteristics, including the ability to produce and consume F&* data and F&* schemas. F&* schemas can be used to describe schemas interchanged via 2eb Services. n fact, a (ataset with a schema can actually be compiled for type safety and statement completion. D$t$ A"$,ter! =O9ED3<S:9> The (ata +dapter object works as a bridge between the (ataset and the source data. 0sing the provider$specific S#l(ata+dapter )along with its associated S#l/ommand and S#l/onnection- can increase overall performance when working with a &icrosoft SK* Server databases. 4or other %*3 (=$supported databases, you would use the %le(b(ata+dapter object and its associated %le(b/ommand and %le(b/onnection objects. The (ata +dapter object uses commands to update the data source after changes have been made to the (ataset. 0sing the 4ill method of the (ata +dapter calls the S3*3/T command9 using the 0pdate method calls the ,S3.T, 0!(+T3 or (3*3T3 command for each changed row. Iou can e"plicitly set these commands in order to control the statements used at runtime to resolve changes, including the use of stored procedures. 4or ad$hoc scenarios, a /ommand =uilder object can generate these at run$time based upon a select statement. 'owever, this run$time generation re#uires an e"tra round$trip to the server in order to gather re#uired metadata, so e"plicitly providing the ,S3.T, 0!(+T3, and (3*3T3 commands at design time will result in better run$time performance. ?. +(%.,3T is the ne"t evolution of +(% for the .,et 4ramework.

E.

+(%.,3T was created with n$Tier, statelessness and F&* in the forefront. Two

new objects, the (ataset and (ata +dapter, are provided for these scenarios. +(%.,3T can be used to get data from a stream, or to store data in a cache for updates. Q. B. There is a lot more information about +(%.,3T in the documentation. .emember, you can e"ecute a command directly against the database in order to

do inserts, updates, and deletes. Iou don5t need to first put data into a (ataset in order to insert, update, or delete it. C. +lso, you can use a (ataset to bind to the data, move through the data, and navigate data relationships

SYSTEM STUDY This deals with the study of e"isting system and its problem, evaluation of alternative solutions and the proposed system definition.

E.i!tin% !0!te#
The scenario in most organi<ation is that they make use of different applications for each of the departments to manage their activities. n the e"isting system the promotion of this project are maintained in single user voice system and also not used in graphical smiles. This main disadvantage of this system was, since all the registers were view web based site.

De#erit!
The process is very slow. The 3"isting system cannot provide smiles. t is difficult to connect with *+, system. t is not a portable one. t6s used in loss compression techni#ues The less number of tools are available in e"isting system t is not a fle"ible one. t6s developed in a >ava. t6s does not a graphical

+s the number of passenger and items are increasing the number of register also with increase (RO(OSED SYSTEM t overcome the problem e"isting project, and support a more features. FEATURES Support clear voice transmission 0sed lossy less file compression techni#ue 0sed smiles

/onnect multi client in *+, (oes not need separate protocol Support special privileged user 3ach person must have login and register the Server t6s developed using V= 6.0. its supported more smiles and graphical interface

SYSTEM DESIGN The System design is last phase that indicate the final system and process of the final system. n the design phase of the data base tables, input screen design. +nd output designs were designed. The database tables were designed by using all the necessary fields in a compact manner. The redundancy and duplication of fields are avoided. +ll the input screens in this system are user friendly and understandable format also the si<e of the screens + menus designed in this system are brief ,compact and self$e"planatory The menus are sharp and user can invoke the system. .eports generated here give the minute information, which helps the manager to take vital decisions. The important of software design can be stated with a single wordS #ualityS. (esign is a lace where #uality is fostered in software development. (esign is the only ways their re#uirements are accurately translated into finished software product are system. 3.1 IN(UT DESIGN naccurate input data are the most common of errors in data processing. nput interface design takes an important role in controlling the errors. n this project errors during data entry are controlled by the input design by providing appropriately error message. The input design is the link that types the information system to the world of its users. t consists of developing specification and procedures for data preparation and to input in to the computer for processing. Simply we can say input design is the process of converting the user$generated inputs into computer$based format. T)e i#,'rt$nt *e$t+re! $re $! *'ll'-!: input screen is not over crowded, as the user can understand a piece of information from the screen. nstead more are provided to understand the data entry process.

nput validation is being done at program level to check errors and help message are to be provided to effectively enter data into the data entry screen in the software. +s human is prone for errors and mistakes confirmation for critical data entries are being provided. 3.2 OUT(UT DESIGN The entire output screens are informative and interactive in such a way that the user can fulfill his re#uirements through #ueries. n this the system the main output screens are to up$to$date reports and listing of re#uired information. System design is process of planning of a new system that is a complement of the old and to replace the e"isting system with new system. The new design is a solution and the translation of the re#uirements of the old by the ways of meeting them. The various inputs, the objectives and the output re#uirements of the system were identified. +fter performing the necessary modification, the input1output reports were finali<ed with the user. +fter performing input1output analysis for the system, the system flow, the file structures and the logical flow of the program were arrived at the system was finally implemented. System design is the process by which a logical model of the proposed system is designed using the system flow diagram, data flow diagram and etc. 0sing these tools, the input to the system, system flow, data flow, the output of the system and the files to be used are designed. 3.3 CODE DESIGN /odes facilitate easier identification, simplification in handling and retrieval if items by consuming less storage space. The codes are designed in such a manner that it will be easily understands by the user. The codes also generated automatically by the system. The code design is the link that ties the information system in the world of its users. /ode design consists of developing specifications and procedures for data preparation, these steps necessary to put transaction data into usable form for

processing, data entry, and the activity of putting the data into the computer for processing. (ata entry can be achieved by instructing the computer for processing and to read the data from a written or printed documents, or it can occur by having people keying data directly into the system. naccurate input data are the most common causes of error in data processing. !roper message and appropriate direction to control errors committed by data entry operations. The following features have been incorporated into the code design of the proposed system. Men+ "riven This system is menu driven. This simplifies computer data access or entry. nstead of remembering what to enter, the user chooses from a menu. The menu limits the user choice of response, but reduces the chances for error in data entry. E$!0 "$t$ in,+t (ata entry code has been designed in a manner, which is much similar, the source documents. +ppropriate messages are provided which prompts the user in entering the right data erroneous data puts are checked at the end of each code entry. D$t$ v$li"$ti'n nput data is validated to minimi<e errors in data entry for certain data, specific codes have been given and validation is done which enables user to enter the re#uired data or correct them if they have entered wrong codes similarly, validation can be done with respect to the data types. U!er *rien"line!! 0se is never left in a state of confusion as to what is happening without appropriate error and acknowledgement message being received.

Inter$&tive "i$l'%+e!: The system engages the user in an interactive dialogue. The system is able to e"tract missing or omitted information from the user by directing the user through appropriate messages. 3.@ DATA3ASE DESIGN + database is a collection of interrelated data with minimum redundancy to serve #uick and effective. n oracle, data are stored in tables. 3ach record is stored in single rows of the tables. 3ach column of the tables refers to the particular fields on the table proper care is to design the database to achieve the objectives below. (ata integration. (ata consistency (ata independence. To the printer. To the server.

TESTING AND IM(9EMENTATION Te!tin% Software testing is a critical element of software #uality assurance and represents the ultimate review of specification, design and code. Testing a program consists of providing the program with the set of test inputs or test cases and observing if the program behaves as e"pected. t is vital to the success of the system. Testing analy<e a program that the indent of finding problems and errors that measures system functionality and #uality. t also evaluates the attributes and t demonstrates capabilities of programmed and access whether they achieve the re#uirement results. n other words, testing cannot show the absence of defects 1 errors. the conformance to specifications and is an indication of software reliability and #uality. Testing includes inspection and structured peer reviews of re#uirements and design as well as e"ecution of code. 3ffective software testing helps to deliver a #uality software product that satisfies user6s re#uirements needs e"ceptions. cost and user dissatisfaction.
%nit testing

f done poorly, it leads to high maintenance

0nit testing focuses on the verification effort on the smallest unit of the software design the module. This is known as the module testing. Since the proposed system has modules, the testing is individually performed on each module. 0sing the design descriptions as a guide, important control parts are tested to uncover errors within the boundary of the module. This testing has been carried out in this system during programming stage itself. n this testing step, each module is found to be working satisfactorily as regards to the e"pected output from the module.
&ali$ation testing

+fter performing the integration testing, software is completely assembled as package. nterfacing errors have been uncovered and corrected, and validation testing

may begin. Software validation is achieved through series of black bo" test that demonstrate conformity with re#uirements. The application was made free of all logical and interface errors, validation testing was done by inputting dummy data to ensure that the software developed satisfied all the re#uirements of the user.
'utput testing

+fter performing the validation testing, the ne"t step is output testing of the proposed system, since no system could be useful if it does not produce the re#uired output in the specific format. The checking them with all possible test values tests the output generated by the system under consideration. 'ence output testing does not result any correction to the system. @.2. SYSTEM IM(9EMENTATION: mplementation includes all those activities that take place to convert from the old system to the new. The old system consists of manually operating delivery information system, which is operated in a very different manner from the proposed new system. The new, replacing the e"isting manual system. + proper implementation is essential to provide a reliable system you meet the re#uirements of the operating organi<ation. +n improper installation may affect the success of the new computeri<ation delivery information system. IM(9EMENTATION (9AN: The implementation plan consists of the methods for changing for conversion and procedures used to ensure that it is performed properly. There are several methods available for handling the new implementations and the conse#uent conversion from the old to the new computeri<ed system. The most secure method for converting from the old to the new system is to run both the old and the new systems in parallel. n this approach, personal may operate in the manual order processing system in the accustomed manner as well as start operating the new computeri<ed system. This method offers high security, because even if there is a flaw in the computeri<ed system, we can depend upon the manual system. 'owever, the cost for maintaining two systems in parallel is very high. This out weights its benefits.

The implementation plan includes a description of all the activities that must occur to implement the new airline information system to put into operation. The implementation plan should anticipate possible problems and must be able to deal with them. The usual problems may be missing documents, mi"ed data formats between current files, errors in data translation, missing data etc.

C'NCL%!('N The project was successful, and the goals globally reached, we could build an intuitive chat, which allows public, private, secured discussions. The application is robust, and designed to answer to many e"ception cases. The code is relatively clear and allows easily eventual other programmers to enter into it to design new developments. +lthough packet loss of any kind is undesirable, some voice packet loss can be tolerated as long as the loss is spread out over a large amount of users. Voice #uality is not generally affected if the amount of packet loss is less than five percent for the total number of calls. &enu driven with user friendly screen enables the user to use the system without any difficulty is in convenient. (ue to many options the user need not type more, instead he can select values from the combo bo" or such tools are provided. This shows the user friendliness of the system also users are guided with valuable information, errors message etc, and no formal knowledge is needed for the user to use the system.

)()L('*RA+,?. 3lias m +ward, System +nalysis and (esign, Dolgotia publications pvt.ltd., ?888. E. 'enry f korth, (atabase System concepts +braham Silverschtat<, &cDraw hills international, 3dn. Q. =ill 3vjen, >ason beres,Visual =asic !rogramming =ible, et al B. Steven .oman,.on !etrusha V= *anguage in a ,utshell , %5.eilly, E00? C. /ameron 2akefield, 'enk$3vert Sonder, V= (eveloper6s Duide, 2ei &eng *ee Series 3ditor

A((ENDICES D$t$*l'- Di$%r$#

S'+r&e C'"e
SERVER %ption 3"plicit !rivate (eclare Sub nit/ommon/ontrols *ib OcomctlQE.dllO )N f 4alse Then 5Trick preserves /ase of 3nums when typing in (3 !rivate .aw(ata%utgoing, .aw(ata ncoming, Server3vent, Server3rror N3nd f !rivate Type T0ser 0sername +s String 5 =enut<ername 0ser!ass +s *ong 5 !asswort )/./QE aus =enut<ername T !asswort+dmin +s =oolean 5 sser +dminU wsc ( +s nteger 5 (er 2insock nde" banTime +s nteger 5 2ie lange isser gebanntU Voice3nabled +s =oolean 5 Voice/hat anU Voice!layer ( +s *ong 5 (FA Voice !layer ( wsc=ytes.eceived +s *ong 5 =ytes empfangen )/hatwsc=ytesSend +s *ong 5 =ytes gesendet )/hatdpA=ytes.eceived%ldSessions +s *ong 5 =ytes empfangen )Voice9nicht in der aktuellen SessiondpA=ytesSend%ldSessions +s *ong 5 =ytes gesendet )Voice9nicht in der aktuellen Session3nd Type !rivate 3num e*og(ata infodata Server3vent Server3rror 3nd 3num 5 V% /3 mplements (irect!layA3vent mplements (irect!layVoice3ventA !rivate mo/all=ack +s (irect!layA3vent !rivate mf3"it +s =oolean !rivate mfTerminate +s =oolean !rivate mlVoice3rror +s *ong 5 V% /3 !rivate 3"itServer +s =oolean !rivate .eceive=uffers)- +s String !rivate +ll0ser)+s T0ser !rivate 2insock/ount +s *ong !rivate /onst Seperator +s String V OWWWO !rivate /onst *V&X4 .ST +s *ong V T'?000 !rivate /onst *V&XS3T3FT3,(3(* STV 32STI*3 +s *ong V )*V&X4 .ST M CB!rivate /onst *VSX3FXD. (* ,3S +s *ong V T'? !rivate /onst *VSX3FX40**.%2S3*3/T +s *ong V T'E0 !rivate (eclare 4unction Send&essage *ib OuserQEO +lias OSend&essage+O )=yVal hwnd +s *ong, X =yVal w&sg +s *ong, X =yVal w!aram +s *ong, X l!aram +s +ny- +s *ong !rivate Sub +dd*og3ntry)=yVal 3ntry +s String, X *og(ataType +s e*og(ataSelect /ase *og(ataType

/ase Server3vent lstServer3vents.+dd tem OYServer O T Time T OZ O T 3ntry /ase infodata lstServer3vents.+dd tem OY nformation O T Time T OZ O T 3ntry /ase Server3rror lstServer3vents.+dd tem OY43'*3. O T Time T OZ O T 3ntry 3nd Select lstServer3vents.Selected)lstServer3vents.*ist/ount $ ?- V True 3nd Sub !rivate 4unction =ytesToString)=ytes +s *ong- +s String (im <w4ile*en +s *ong <w4ile*en V =ytes f <w4ile*en :V ?0EB Then =ytesToString V <w4ile*en T O =yteO 3lse f <w4ile*en :V ?0BAC@6 Then 5,%T [24 *3*3,... =ytesToString V .ound)<w4ile*en 1 )?0EB-, E- T O H=O 3lse 5,%T [24 *3*3,... =ytesToString V .ound)<w4ile*en 1 ?0BAC@6, E- T O &=O 3nd f 3nd 4unction !rivate Sub cmd+ctuali<eX/lick)(im dp/ +s (!,X/%,,3/T %,X ,4% (im i +s nteger %n 3rror .esume ,e"t lv0ser.*ist tems./lear 4or i V 0 To 0=ound3")+ll0serlv0ser.*ist tems.+dd , , +ll0ser)i-.0sername 5\ wenn voice enabled ist... f ,ot +ll0ser)i-.Voice!layer ( V $? Then dp/ V dpp.Det/onnection nfo)+ll0ser)i-.Voice!layer (lv0ser.*ist tems)i M ?-.Sub tems)?0=ytesToString)dp/ .l=ytes.eceivedDuaranteed M dp/ .l=ytes.eceived,onDuaranteed +ll0ser)i-.dpA=ytes.eceived%ldSessionslv0ser.*ist tems)i M ?-.Sub tems)8- V =ytesToString)dp/ .l=ytesSentDuaranteed dp/ .l=ytesSent,onDuaranteed M +ll0ser)i-.dpA=ytesSend%ldSessions3lse 5,%T ,%T... lv0ser.*ist tems)i M ?-.Sub tems)?0=ytesToString)+ll0ser)i-.dpA=ytes.eceived%ldSessionslv0ser.*ist tems)i M ?-.Sub tems)8=ytesToString)+ll0ser)i-.dpA=ytesSend%ldSessions3nd f 5\ wsc=ytes... lv0ser.*ist tems)i M ?-.Sub tems)A- V =ytesToString)+ll0ser)i-.wsc=ytes.eceivedlv0ser.*ist tems)i M ?-.Sub tems)@- V =ytesToString)+ll0ser)i-.wsc=ytesSend5\ .est lv0ser.*ist tems)i M ?-.Sub tems)?- V +ll0ser)i-.0ser!ass lv0ser.*ist tems)i M ?-.Sub tems)E- V f)+ll0ser)i-.+dmin, OtrueO, OfalseO-

V M M V V

lv0ser.*ist lv0ser.*ist lv0ser.*ist lv0ser.*ist ,e"t i 3nd Sub

tems)i M ?-.Sub tems)i M ?-.Sub tems)i M ?-.Sub tems)i M ?-.Sub

tems)Q- V +ll0ser)i-.banTime tems)B- V +ll0ser)i-.wsc ( tems)C- V +ll0ser)i-.Voice3nabled tems)6- V +ll0ser)i-.Voice!layer (

!rivate Sub cmd+dd0serX/lick)(im ,ew0sername +s String (im ,ew!assword +s String (im ,ew+dmin +s String (im /rcQE/heck +s ,ew cls/./ (im fnr +s nteger (im <w +s String (im i +s nteger (im e +s nteger %n 3rror DoTo errh 5\ Sicherungskopie f 4ile3"ists)+pp.!ath T O]user.t"tO- Then /all 4ile/opy)+pp.!ath T O]user.t"tO, +pp.!ath T O]secXuser.t"tO5\ ,euen =enut<ernamen ,ew0sername V nput=o")ODeben Sie einen neuen =enut<ernamen einO, O,euer =enut<erOf Str!tr),ew0sername- V 0 Then 3"it Sub 5\=enut<ername schon vorhandenU e V $? 4or i V ? To lv+dd.em.*ist tems./ount f lv+dd.em.*ist tems)i-.Te"t V ,ew0sername Then f &sg=o")O(er =enut<ername e"istiert bereits^ &_chten Sie f`r diesen =enut<er neuere (aten eintragenUO, vb3"clamation M vbIes,o- V vbIes Then eVi 3"it 4or 3lse 5,%T &SD=%F)O(3. =3,0T[3.,+&3 3F ST 3.T =3.3 TS^ &a/'T3, S 3 4b. ( 3S3, =3,0T[3. ,303.3 (+T3, 3 ,T.+D3,UO,... 3"it Sub 3nd f 3nd f ,e"t i 5\2enn nicht, dann adden... f e V $? Then lv+dd.em.*ist tems.+dd , , ,ew0sername e V lv+dd.em.*ist tems./ount 3nd f 5\ ,eues !asswort ,ew!assword V nput=o")ODeben Sie ein !asswort f`r den =enut<er einO, O,euer =enut<erOf Str!tr),ew!assword- V 0 Then 3"it Sub 5\ +dmin$.echte f &sg=o")OSoll der =enut<er feste +dministratorrechte habenUO, vbIes,o- V vbIes Then ,ew+dmin V OtrueO 3lse 5,%T &SD=%F)OS%** (3. =3,0T[3. 43ST3 +(& , ST.+T%..3/'T3 '+=3,UO,...

,ew+dmin V OfalseO 3nd f lv+dd.em.*ist tems. tem)e-.Sub tems)?- V /rcQE/heck./alculateString),ew!assword T ,ew0sernamelv+dd.em.*ist tems. tem)e-.Sub tems)E- V ,ew+dmin (o3vents .efresh (o3vents 5\ so alles hin<ugef`gt...jet<t noch speichern fnr V 4ree4ile %pen +pp.!ath T O]user.t"tO 4or %utput +s Nfnr 4or i V ? To lv+dd.em.*ist tems./ount !rint Nfnr, lv+dd.em.*ist tems)i-.Te"t !rint Nfnr, lv+dd.em.*ist tems)i-.Sub tems)?!rint Nfnr, lv+dd.em.*ist tems)i-.Sub tems)E,e"t i /lose Nfnr f 4ile3"ists)+pp.!ath T O]secXuser.t"tO- Then Hill +pp.!ath T O]secXuser.t"tO &sg=o" O=enut<er registriert^ ),eustart erforderlich-O, vb nformation 3"it Sub errh7 &sg=o" OSchwerer +usnahmefehler beim [ugriff auf die (atei 0ser.t"t^ 3s wurde <uvor eine Sicherungskopie angelegt. )secXuser.t"t-O, vb/ritical 3nd 3nd Sub !rivate Sub cmd3ndX/lick)f &sg=o")OServer wirklich beendenUO, vb/ritical M vbIes,o- V vbIes Then 3"itServer V True 0nload &e 3nd f 3nd Sub !rivate Sub 4ormX*oad)(im i +s nteger f +pp.!rev nstance Then 3nd 5frm&ain.'ide .e(im .eceive=uffers)0.e(im Sending(ata)0.ead0ser(ata tsServerX/lick cmd+ctuali<eX/lick (o3vents modSysTray.+ddTray picTray, OV=&essenger8 ServerO, picTray 4ull.owSelect lv0ser 4ull.owSelect lv+dd.em Drid*ines lv0ser Drid*ines lv+dd.em wsc&ain.*isten 5

tmrStatsXTimer 4or i V 0 To 0=ound3")+ll0serlv+dd.em.*ist tems.+dd , , +ll0ser)i-.0sername lv+dd.em.*ist tems. tem)i M ?-.Sub tems)?- V +ll0ser)i-.0ser!ass lv+dd.em.*ist tems. tem)i M ?-.Sub tems)E- V f)+ll0ser)i-.+dmin, OtrueO, OfalseO,e"t i 3nd Sub !rivate Sub 4ormXKuery0nload)/ancel +s nteger, X 0nload&ode +s ntegerf ,ot 3"itServer +nd ,ot vb+pp2indows Then /ancel V True &e.'ide 3nd f 3nd Sub !rivate Sub 4ormX0nload)/ancel +s nteger(im i +s nteger (im fnr +s nteger %n 3rror .esume ,e"t modSysTray..emTray wsc&ain./lose 4or i V ? To 2insock/ount wsc)2insock/ount-./lose 0nload wsc)2insock/ount(o3vents ,e"t i +dd*og3ntry O2insocks beendetO, infodata /leanup +dd*og3ntry O(irectF A Voice Server geschlossenO, infodata %n 3rror .esume ,e"t &k(ir +pp.!ath T O]Server*ogsO %n 3rror DoTo 0 fnr V 4ree4ile %pen +pp.!ath T O]Server*ogs]Server*ogXO T Det,ow T O.t"tO 4or %utput +s Nfnr 4or i V 0 To lstServer3vents.*ist/ount $ ? !rint Nfnr, lstServer3vents.*ist)i(o3vents ,e"t i +dd*og3ntry OSchliece Server$*ogO, infodata !rint Nfnr, OYServer O T Time T OZ O T OSchliece Server$*ogO /lose Nfnr (oSleep E00 3nd Sub %ption 3"plicit !ublic Type ,%T 4I /%,(+T+ cbSi<e +s *ong hwnd +s *ong u ( +s *ong u4lags +s *ong u/allback&essage +s *ong h con +s *ong s<Tip +s String d ?EA

dwState +s *ong dwState&ask +s *ong s< nfo +s String d EC6 uTimeout +s *ong s< nfoTitle +s String d 6B dw nfo4lags +s *ong 3nd Type !rivate nfX con(ata +s ,%T 4I /%,(+T+ !rivate /onst ,%T 4I /%,XV3.S %, V Q !rivate /onst ,%T 4I /%,X%*(V3.S %, V 0 !rivate /onst , &X+(( V T'0 !rivate /onst , &X&%( 4I V T'? !rivate /onst , &X(3*3T3 V T'E !rivate /onst , &XS3T4%/0S V T'Q !rivate /onst , &XS3TV3.S %, V T'B !rivate /onst , 4X&3SS+D3 V T'? !rivate /onst , 4X /%, V T'E !rivate /onst , 4XT ! V T'B !rivate /onst , 4XST+T3 V T'A !rivate /onst , 4X ,4% V T'?0 !rivate /onst , SX' ((3, V T'? !rivate /onst , SXS'+.3( /%, V T'E !rivate /onst , 4X,%,3 V T'0 !rivate /onst , 4X2+., ,D V T'E !rivate /onst , 4X3..%. V T'Q !rivate /onst , 4X ,4% V T'? !rivate /onst , 4XD0 ( V T'B !rivate /onst 2&X&%0S3&%V3 V T'E00 !rivate /onst 2&X*=0TT%,(%2, V T'E0? !rivate /onst 2&X*=0TT%,0! V T'E0E !ublic /onst 2&X*=0TT%,(=*/*H V T'E0Q !rivate /onst 2&X.=0TT%,(%2, V T'E0B !rivate /onst 2&X.=0TT%,0! V T'E0C !rivate /onst 2&X.=0TT%,(=*/*H V T'E06 !ublic Sub +ddTray)!ic +s !icture=o", X traytip +s String, X !ict +s !icture=o"2ith nfX con(ata .cbSi<e V *en)nfX con(ata.hwnd V !ict.hwnd .u ( V vb,ull .u4lags V , 4X /%, %r , 4X ,4% %r , 4X&3SS+D3 %r , 4XT ! .u/allback&essage V 2&X&%0S3&%V3 .h con V !ic.!icture .s<Tip V traytip T vb,ull/har 5Kuick nfo des Symbols T vb,ull/har .dwState V 0 .dwState&ask V 0 3nd 2ith 5,4X /%,(+T+ ShellX,otify con , &X+((, nfX con(ata 3nd Sub

!ublic Sub =aloonTip)!ic +s !icture=o", X traytip +s String, X !ict +s !icture=o", X nfoTip +s String, X nfoTitle +s String2ith nfX con(ata .cbSi<e V *en)nfX con(ata.hwnd V !ic.hwnd .u ( V vb,ull .u4lags V , 4X /%, %r , 4X ,4% %r , 4X&3SS+D3 %r , 4XT ! .u/allback&essage V 2&X&%0S3&%V3 .h con V !ict.!icture .s<Tip V traytip T vb,ull/har 5Kuick nfo des Symbols T vb,ull/har .dwState V 0 .dwState&ask V 0 .s< nfo V nfoTip T vb,ull/har 5Te"t des =allonTips. &ehr<eilige Tips sind m_glich )[eilenwechsel7 vb/r*f-. +m 3nde muss ein /hre)0- angehfngt werden. .s< nfoTitle V nfoTitle T vb,ull/har 54ettformatierte bberschrift des =alloon$Tips. T /hre)0.dw nfo4lags V , 4X ,4% 5=enut<es con f`r den =alloon ) nfo, 2arnung oder 4ehler-), 4X,%,3, , 4X ,4%, , 4X2+., ,D, , 4X3..%..uTimeout V ? 5[eit nachdem der =alloon spft. verschwinden soll )millisek.3nd 2ith 5,4X /%,(+T+ ShellX,otify con , &X&%( 4I, nfX con(ata 3nd Sub !ublic Sub &odifyTray)!ic +s !icture=o", X traytip +s String, X !ict +s !icture=o"2ith nfX con(ata .cbSi<e V *en)nfX con(ata.hwnd V !ic.hwnd .u ( V vb,ull .u4lags V , 4X /%, %r , 4X ,4% %r , 4X&3SS+D3 %r , 4XT ! .u/allback&essage V 2&X&%0S3&%V3 .h con V !ict.!icture .s<Tip V traytip T vb,ull/har 5Kuick nfo des Symbols T vb,ull/har .dwState V 0 .dwState&ask V 0 3nd 2ith 5,4X /%,(+T+ ShellX,otify con , &X&%( 4I, nfX con(ata 3nd Sub !ublic Sub .emTray)ShellX,otify con , &X(3*3T3, nfX con(ata 3nd Sub

Client 5 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 5 5 V=&essenger8 Server T /lient 5 5 )/- by Thorben *inneweber )E00C5 5 %penSource 5 5 &ay be passed unchanged. 5/an be changed only for private use. 5/ommercial use is forbidden^ 5 5Suggestions for improvements and changes, please 5 5 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 5 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 5 5 V=&essenger 8 /lient 5 5 Serverbefehle 5 $$$$$$$$$$$$$$$$$$$$$ 5 5 5 *ogin 5Y0sernameZ YpasswordZ 5$; *ogin .e#uest 5 5&essage 5Y&essageZ 5$; Y&essageZ to all 5 5!rivate&essage 5Y0sernameZ 5$; &essage to YusernameZ 5 5,udge 5Y0sernameZ 5$; ,udge to YusernameZ 5 54ile 5Y0sernameZ Y4ilenameZ Y4ile Si<eZ 5$; Sends to YusernameZ, a 4ileanfrage for Y4ilenameZ Y4ile Si<eZ 5 5 5+cceptfile 5Y0sernameZ Y+cceptString )true ] false ] alreadyreceiving-Z 5$; Sends Y0ser ,ameZ the Y+cceptString )true ] false ] alreadyreceiving-Z for a 4ileTransferanfrage 5 5Typing 5YTypeString )true ] falseZ 5$; Sends to all users of the YTypeString )true ] falseZ

5 5 5Hick 5Y0sernameZ 5$; Hick YusernameZ )only works if the sender has no admin rights5 5=an 5Y0sernameZ 5$; =anned YusernameZ )only works if the sender has no admin rights5 5&ake+dmin 5Y0sernameZ 5$; &ake Y0ser nameZ to the +dmin )only works if the sender has no admin rights5 5Diveupadmin 5YZ 5$; Dives the +dmin 5 5Hick voice 5Y0sernameZ 5$; Throws YusernameZ from the Voice /hat 5 5*ogin admin 5YZ 5$; .epresents the fi"ed admin rights restored 5 5+skvoice 5YZ 5$; .e#uest for voice chat 5 5 5.eturn values from the server )3vents- )from the perspective of the client5$$$$$$$$$$$$$$$$$$$$$$$$ 5 5*ogin 5Y+cceptString )accept ] deny-Z 5$; *ogin .e#uest$.esponse 5 5&essage 5Y0sernameZ YmessageZ Y+dmin )true ] false-Z 5$; Y&essageZ to all of YusernameZ 5 5!rivate&essage 5Y0sernameZ YmessageZ Y+dmin )true ] false-Z 5$; !rivate YnewsZ from YusernameZ 5 5!rivatemessageb 5Y0sernameZ YmessageZ Y+dmin )true ] false-Z 5$; /onfirmation by a private YmessageZ 5 5,udge 5Y0sernameZ Y+dmin )true ] false-Z 5$; ,udge from YusernameZ 5 5,udgeb

5Y0sernameZ Y+dmin )true ] false-Z 5$; ,udge Send confirmation 5 54ileb 5Y0sernameZ YfilenameZ Y4ilesi<eZ Y+dmin )true ] false-Z 5$; 4ile+nfragesendebestftigung 5 5+cceptfile 5Y0sernameZ Y+cceptString )true ] false ] alreadyreceiving-Z YTech )true ] false-Z 5$ .e#uest confirmation; 4ile transfer from YusernameZ, Y+cceptString )true ] false ] alreadyreceiving-Z 5 5+cceptfileb 5Y0sernameZ Y+cceptString )true ] false ] alreadyreceiving-Z YTech )true ] false-Z 5$; 4iletransfer+nfrage+ntwort=estftigung 5 5Typing 5Y0sernameZ YTypeString )true ] false-Z YTech )true ] false-Z 5$; Y0ser ,ameZ ] not typing typing9 YTypeString )true ] false-Z 5 5Voice 5Y0sernameZ YusernameZ YVoiceStr )enabled ] disabledZ 5$; Y0ser ,ameZ ] not typing typing9 YTypeString )true ] false-Z 5 5+skvoice 5Y+llowStr )true ] false-Z 5$; Voice answer to Kuestion 5 5Hick 5Y0sernameZ YusernameEZ 5$ 'as; Y0sernameZ YusernameEZ kicked 5 5=an 5Y0sernameZ YusernameEZ 5$ 'as; Y0sernameZ YusernameEZ banned 5 5&ake+dmin 5Y0sernameZ YusernameEZ 5$ 'as; Y0sernameZ YusernameEZ made the +dmin 5 5Diveupadmin 5Y0sernameZ 5$; Y0ser ,ameZ has removed his admin rights 5 5Hick voice 5Y0sernameZ YusernameEZ 5$ Hicks; Y0sernameZ YusernameEZ from the Voice /hat 5 5 %ption 3"plicit !rivate ntelliVisible +s =oolean !rivate Time%ut/ +s nteger !rivate Typing)+s tTyping

!rivate .eceive=uffer !ublic o&agnetic2nd

+s String +s ,ew c&agnetic2nd

!rivate (eclare Sub nit/ommon/ontrols *ib OcomctlQE.dllO )!rivate (eclare 4unction Shell3"ecute *ib OshellQEO +lias OShell3"ecute+O )=yVal hwnd +s *ong, X =yVal lp%peration +s String, X =yVal lp4ile +s String, X =yVal lp!arameters +s String, X =yVal lp(irectory +s String, X =yVal nShow/md +s *ong- +s *ong !rivate Sub +ccept4ile)0sername +s String, X +cceptStr +s String, X .emote ! +s String, X +dmin +s String5 \ 5.esponse of others to file a support re#uest f .emote ! V O?E@.0.0.?O Then 5 /lient who wants to send a file that runs on the same computer as server 5 special case )in press by &r. =ierwirth yet implemented5 9- .emote ! V mod(eclaration.Server ! 3nd f f +cceptStr V OtrueO Then +ddTe"tTo.T= 0sername T f)+dmin V OtrueO, O )+dministrator-O, OO- T O)O T .emote ! T O- hat die (ateitransferanfrage angenommenO, 3vent/olor, True, True mod(eclaration..emote ! V .emote ! mod(eclaration.Send4ile V True frmTransfer.Show 3lse f +cceptStr V OfalseO Then 53mergency +//3!TST.... +ddTe"tTo.T= 0sername T f)+dmin V OtrueO, O )+dministrator-O, OO- T O)O T .emote ! T O- hat die (ateitransferanfrage abgelehntO, 3vent/olor, True, True mod(eclaration.Sending%r.eceiving4ile V 4alse 3lse f +cceptStr V OalreadyreceivingO Then 53mergency +//3!TST... +ddTe"tTo.T= 0sername T f)+dmin V OtrueO, O )+dministrator-O, OO- T O)O T .emote ! T O- kann momentan keine (ateien empfangen, da er1sie bereits (ateien sendet1empffngtO, 3vent/olor, True, True mod(eclaration.Sending%r.eceiving4ile V 4alse 3nd f 4lash+ndSound 3nd Sub !rivate Sub +ccept4ile=)0sername +s String, X +cceptStr +s String, X +dmin +s String5\ f you have consented to the 4ile+nfrage f +cceptStr V OtrueO Then +ddTe"tTo.T= OSie haben dem (ateitransfer mit O T 0sername T O <ugestimmtO, 3vent/olor, True, True frmTransfer.Show 3lse f +cceptStr V OfalseO Then 5,%T +//3!TST....

+ddTe"tTo.T= OSie haben den (ateintransfer mit O T 0sername T O abgelehntO, 3vent/olor, True, True 3lse f +cceptStr V OalreadyreceivingO Then 5,%T +//3!TST.... +ddTe"tTo.T= O3in (ateitransfer wurde automatisch abgelehnt, da Sie bereits eine (atei empfangenO, 3vent/olor, True, True 3nd f 4lash+ndSound 3nd Sub !rivate Sub +dd&essageTe"tTo.T=)0sername +s String, X &essage +s String, X !rivate&essage +s =oolean, X +dmin +s =oolean5\ This wonderful feature added 5$ ,ews 5$ !rivate messages &essage V mod.T=Smilies./heck.ichTe"t4orSmilies)&essage- 5 Smilie$/odes replace +ddTe"tTo.T= 0sername T f)+dmin, O )+dministrator-O, OO- T f)!rivate&essage, O )private ,achricht-O, OO- T O sagt7O, CCE66?E, , !rivate&essage +ddTe"tTo.T= &essage, , , !rivate&essage 3nd Sub !rivate Sub +ddTe"tTo.T=)Te"t +s String, X %ptional /olor +s /olor/onstants V vb=lack, X %ptional =old +s =oolean V 4alse, X %ptional talic +s =oolean V 4alse5\ Simplify the O.T=$te"t +ddensO 2ith .T=/hat .SelStart V *en).Te"t.Sel=old V =old .Sel/olor V /olor .Sel talic V talic .SelTe"t V Te"t T vb,ew*ine 3nd 2ith 5.T=/hat 3nd Sub !rivate Sub +skVoice)+llow +s String5The server has accepted our re#uest to be allowed to engage in voice chat 5$]"Qe ,ow we can connect to the (FA voice server record )otherwise we would 5/an not connect to the Voice Serverf ,ot b*oadedfrmVoice Then f +llow V OtrueO Then +ddTe"tTo.T= OThe server has the re#uest for a Voice/hat approvedO, 3vent/olor, True, True

frmVoice.*eft V frm&ain.*eft M frm&ain.2idth frmVoice.Top V frm&ain.Top frmVoice.Show vb&odeless 3lse 5,%T +**%2... +ddTe"tTo.T= OThe server has rejected the re#uest for a voice chatO, 3vent/olor, True, True 3nd f 3nd f 3nd Sub !rivate Sub =an)+dmin,ame +s String, X 0sername +s String+ddTe"tTo.T= +dmin,ame T O has O T 0sername T O banned^O, 3vent/olor, True, True 3nd Sub !rivate Sub cmd4ormat/odeX/lick)%n 3rror .esume ,e"t .T=&essage.Te"t.T4 V modV=to.T4/ode./reate/oloredString).T=&essage.Te"t3nd Sub !rivate Sub cmd,udgeX/lick)(im To0ser +s String To0ser V lst=uddys.*ist tems)lst=uddys.Selected tem5\ Sends a nudge to selected user f *en=)To0ser- V 0 Then 3"it Sub f To0ser V mod(eclaration.0sername Then &sg=o" OIou can not 5,udge5 send to yourselfO, vb nformation 3lse 5,%T Tousen... Send(ata OnudgeWO T lst=uddys.*ist tems)lst=uddys.Selected tem3nd f 3nd Sub !rivate Sub cmd!rivate&essageX/lick)(im &essageToSend +s String (im To0ser +s String &essageToSend V mod4ast.eplace..eplace).T=&essage.Te"t.T4, OWO, OOTo0ser V lst=uddys.*ist tems)lst=uddys.Selected tem5\ Send a private message that only the other )and one can myself- see f *en=)mod4ast.eplace..eplace).T=&essage.Te"t.T4, OWO, OO-- V 0 Then .T=&essage.Te"t V vb,ullString 3"it Sub 3nd f f *en=)To0ser- V 0 Then 3"it Sub f *en)&essageToSend- ; )E0BA00- Then &sg=o" OThe message must not e"ceed E00kb in si<e^O 3lse 5,%T *3, ).T=&3SS+D3.T3FT.T4 -...5 ,%T *3, )&3SS+D3T%S3,(- ...

f ,ot To0ser V mod(eclaration.0sername Then Send(ata OprivatemessageWO T lst=uddys.*ist tems)lst=uddys.Selected tem- T OWO T &essageToSend .T=&essage.Te"t V vb,ullString %n 3rror .esume ,e"t .T=&essage.Set4ocus %n 3rror DoTo 0 3lse 5,%T ,%T... &sg=o" OIou can not send private messages to yourself^O, vb nformation 3nd f 3nd f 3nd Sub !rivate Sub cmdSendX/lick)(im &essageToSend +s String &essageToSend V mod4ast.eplace..eplace).T=&essage.Te"t.T4, OWO, OO5\ Sends a message to all f ,ot *en=)mod4ast.eplace..eplace).T=&essage.Te"t, OWO, OO-- V 0 Then tmrType.3nabled V 4alse f *en)&essageToSend- ; )E0BA00- Then &sg=o" O(ie ,achricht darf ma"imal E00kb groc sein^O 3lse 5,%T *3, ).T=&3SS+D3.T3FT.T4 -...5 ,%T *3, )&3SS+D3T%S3,(- ... Send(ata OtypingWfalseO f .T=&essage.Te"t V O]]kickO Then Send(ata OkickWO T lst=uddys.*ist tems)lst=uddys.Selected tem3lse f .T=&essage.Te"t V O]]banO Then 5,%T .T=&3SS+D3.T3FT... Send(ata ObanWO T lst=uddys.*ist tems)lst=uddys.Selected tem3lse f .T=&essage.Te"t V O]]makeadminO Then 5,%T .T=&3SS+D3.T3FT... Send(ata OmakeadminWO T lst=uddys.*ist tems)lst=uddys.Selected tem3lse f .T=&essage.Te"t V O]]giveupadminO Then 5,%T .T=&3SS+D3.T3FT... Send(ata OgiveupadminO 3lse f .T=&essage.Te"t V O]]loginadminO Then 5,%T .T=&3SS+D3.T3FT... Send(ata OloginadminWO T mod(eclaration.0sername 3lse f .T=&essage.Te"t V O]]kickvoiceO Then 5,%T .T=&3SS+D3.T3FT... Send(ata OkickvoiceWO T lst=uddys.*ist tems)lst=uddys.Selected tem3lse 5,%T .T=&3SS+D3.T3FT... Send(ata OmessageWO T &essageToSend 3nd f .T=&essage.Te"t V vb,ullString %n 3rror .esume ,e"t .T=&essage.Set4ocus %n 3rror DoTo 0 3nd f 3lse 5,%T ,%T... .T=&essage.Te"t V vb,ullString 3nd f 3nd Sub !rivate Sub cmdSend4ileX/lick)(im To0ser +s String

(im 4ilename +s String To0ser V lst=uddys.*ist tems)lst=uddys.Selected temf *en=)To0ser- V 0 Then 3"it Sub f mod(eclaration.Sending%r.eceiving4ile Then &sg=o" OSie senden oder empfangen bereits eine (atei.O 3lse 5&%((3/*+.+T %,.S3,( ,D%..3/3 V ,D4 *3 V 4+*S310 f ,ot To0ser V mod(eclaration.0sername Then mod(eclaration.Sending%r.eceiving4ile V True mod//.Show%pen hwnd, True 4ilename V mod//.4ile(ialog.s4ile 4ilename V *efte)4ilename, nStr)4ilename, vb,ull/har- $ ?- 5chr)0- cut mod(eclaration.!ath%f4ileToSend%r.eceive V 4ilename f ,ot 4ile3"ists)4ilename- Then mod(eclaration.Sending%r.eceiving4ile V 4alse &sg=o" OThe soecified file does not e"ist^O, vb nformation 3lse 5,%T ,%T... mod(eclaration..eceiver%rSender V To0ser Send(ata OfileWO T To0ser T OWO T mod4unctions.3"tract4ilename)4ilename- T OWO T mod4unctions.Det4ile*en)4ilename3nd f 3lse 5,%T ,%T... &sg=o" OIou can not send files to yourself^O, vb nformation 3nd f 3nd f 3nd Sub !rivate Sub /onnected)5 \ Should be called when connection has been established ]"E6 *ogin modSysTray.&odifyTray picTray, O&essenger 8 $ %nlineO, picTray .T=&essage.3nabled V True cmdSend.3nabled V True cmd,udge.3nabled V True cmdSend4ile.3nabled V True cmd!rivate&essage.3nabled V True %n 3rror .esume ,e"t .T=&essage.Set4ocus %n 3rror DoTo 0 (o3vents 3nd Sub !rivate Sub (isconnected)5\ Should be called when there is no Vebindung )also in the 4ormX*oad^-]"Qe $ 3verything is disabled 1 reset wsc./lose modSysTray.&odifyTray picTray, O&essenger 8 $ not connectedO, picTray tmr/onnect.3nabled V 4alse tmr/onnection/heck.3nabled V 4alse tmr*ogin.3nabled V 4alse

Time%ut/ V 0 lst=uddys./lear .T=&essage.3nabled V 4alse cmdSend.3nabled V 4alse cmd,udge.3nabled V 4alse cmdSend4ile.3nabled V 4alse cmd!rivate&essage.3nabled V 4alse f b*oadedfrmTransfer Then frmTransfer.0nloadfrmTransfer mod(eclaration.Sending%r.eceiving4ile V 4alse (o3vents 3nd Sub !rivate Sub 4ile)0sername +s String, X 4ilename +s String, X 4ileSi<e +s String, X .emote ! +s String, X +dmin +s Stringf .emote ! V O?E@.0.0.?O Then 5 /lient who wants to send a file that runs on the same computer as server 5 special case )in press by &r. =ierwirth yet implemented 9- .emote ! V mod(eclaration.Server ! 3nd f mod(eclaration..eceiver%rSender V 0sername 5\ ne accept re#uest to get a file 5$; will be automatically rejected if a file already sent 1 received f mod(eclaration.Sending%r.eceiving4ile Then Send(ata OacceptfileWO T 0sername T OWalreadyreceivingO 3lse 5&%((3/*+.+T %,.S3,( ,D%..3/3 V ,D4 *3 V 4+*S310 mod(eclaration.Sending%r.eceiving4ile V True cmdSend4ile.Value V True !laySound 4ile%rVoice.e#uest +ddTe"tTo.T= 0sername T f)+dmin V OtrueO, O )+dministrator-O, OO- T O)O T .emote ! T O- waiting for the file 5O T 4ilename T O5 )O T 4ileSi<e T O- assume.O, 3vent/olor, True, True 2ith frm+ccept4ile .img con.!icture V mod3"tract con.*oad con)mod3"tract con.*arge, .ighte )4ilename, *en)4ilename- $ nStr.ev)4ilename, O.O--.+cceptString V OacceptfileWO T 0sername T OWtrueO .(enyString V OacceptfileWO T 0sername T OWfalseO ./aption V O2ould you like to file 5O T 4ilename T O5 )O T 4ileSi<e T O- von O T 0sername T f)+dmin V OtrueO, O )+dministrator-O, OO- T O )O T .emote ! T O- assumeUO 3nd 2ith 5frm+ccept4ile mod(eclaration..emote ! V .emote ! mod(eclaration.Send4ile V 4alse frm+ccept4ile.Show 3nd f 4lash+ndSound 3nd Sub !rivate Sub 4ile=)0sername +s String, X 4ilename +s String, X 4ileSi<e +s String, X

+dmin +s String5 \ + confirmation that you have sent a re#uest +ddTe"tTo.T= O(o you have a #uestion to the user O T 0sername T O sent, the file 5O T 4ilename T O5 )O T 4ileSi<e T O- an<unehmenO, 3vent/olor, True, True 4lash+ndSound 3nd Sub !rivate Sub 4ill ntelliSense2ith+dmin.ights)lst lst lst lst lst lst ntelliSense.+dd ntelliSense.+dd ntelliSense.+dd ntelliSense.+dd ntelliSense.+dd ntelliSense.+dd tem OkickO tem OgiveupadminO tem ObanO tem OmakeadminO tem OloginadminO tem OkickvoiceO

3nd Sub !rivate Sub 4i"ed(ata+rrival)str(ata +s String5 \ 'ere, the data are well$separated as they were sent off$again 5 $; ingenious system 9- :$ (im v +s Variant f ,ot *en)str(ata- V 0 Then v V Split)str(ata, OWOSelect /ase /Str)v)0-5\ .eceiving login information /ase OloginO *ogin /Str)v)?-5\ .eplaced by 5normal5 message /ase OmessageO &essage /Str)v)?--, /Str)v)E--, /Str)v)Q-5\ 2ho is %nlineU /ase OuserlstO 0pdate*st /Str)v)?--, /Str)v)E-5\ .eceive a private message 1 delivery report /ase OprivatemessageO !rivate&essage /Str)v)?--, /Str)v)E--, /Str)v)Q-/ase OprivatemessagebO !rivate&essage= /Str)v)?--, /Str)v)E--, /Str)v)Q-5\ .eceiving a 5nudges5 1 Sendebestftigung /ase OnudgeO ,udge /Str)v)?--, /Str)v)E-/ase OnudgebO ,udge= /Str)v)?--, /Str)v)E-5\ 4ileTransfer+,4.+D3 empfangen 1 Sende=estftigung /ase OfileO 5 $; confirmation that what one tries to send 4ile /Str)v)?--, /Str)v)E--, /Str)v)Q--, /Str)v)B--, /Str)v)C-/ase OfilebO 5 $; you get ne in#uiry

4ile= /Str)v)?--, /Str)v)E--, /Str)v)Q--, /Str)v)B-5\ 4ileTransfer=3STgT D0,D empfangen 1 Sende=estftigung der 4ileTransfer=3STgT D0,D /ase OacceptfileO 5 $; confirmation that you accept 1 not accept +ccept4ile /Str)v)?--, /Str)v)E--, /Str)v)Q--, /Str)v)B-/ase OacceptfilebO 5 $; you get ne in#uiry +ccept4ile= /Str)v)?--, /Str)v)E--, /Str)v)Q-/ase OtypingO 0serTyping /Str)v)?--, /Str)v)E--, /Str)v)Q-/ase OvoiceO Voice /Str)v)?--, /Str)v)E--, /Str)v)Q-/ase OaskvoiceO +skVoice /Str)v)?-5 5 5 \ The admin has done something /ase OkickO Hick /Str)v)?--, /Str)v)E-/ase ObanO =an /Str)v)?--, /Str)v)E-/ase OmakeadminO &ake+dmin /Str)v)?--, /Str)v)E-/ase OgiveupadminO Dive0p+dmin /Str)v)?-/ase OloginadminO *ogin+dmin /Str)v)?-/ase OkickvoiceO HickVoice /Str)v)?--, /Str)v)E-3nd Select 3nd f 5 f ,ot 'as+ctive2indow Then 5 mod4unctions.4lash4orm frm&ain.hwnd, 4alse 5\ it what happened, then flash form 5 3nd f 3nd Sub !rivate Sub 4ormX nitiali<e)/all nit/ommon/ontrols 3nd Sub !rivate Sub 4ormX*oad).e(im Typing)0mod4unctionsE.*oad%ptions 2ith .T=&essage .Sel4ont,ame V mod(eclaration.Saved%ptions.4ont.4ont,ame .Sel4ontSi<e V mod(eclaration.Saved%ptions.4ont.4ontSi<e .Sel/olor V mod(eclaration.Saved%ptions.4ont.4ont/olor .Sel=old V mod(eclaration.Saved%ptions.4ont.4ont=old .Sel talic V mod(eclaration.Saved%ptions.4ont.4ont talic .Sel0nderline V mod(eclaration.Saved%ptions.4ont.4ont0nderline .SelStrikeThru V mod(eclaration.Saved%ptions.4ont.4ontStrikeThru

3nd 2ith 5.T=&3SS+D3 4ill ntelliSense2ith+dmin.ights nitSmilies %n 3rror .esume ,e"t f mod(eclaration.Saved%ptions.Save'istory Then .T=/hat.*oad4ile +pp!ath T O]history]O T Det(ate T O.rtfO .T=/hat.SelStart V *en).T=/hat.Te"t3nd f %n 3rror DoTo 0 f ,ot s (3 Then /all o&agnetic2nd.+dd2indow)&e.hwnd3nable0.*(etect .T=/hat.hwnd, &e.hwnd mod.esi<e.&inX2idth V E00 mod.esi<e.&inX'eight V EC0 mod.esi<e.'ook hwnd 3nd f modSysTray.+ddTray picTray, OO, picTray (isconnected &e.Show (o3vents Sign n 3nd Sub !rivate Sub 4ormX.esi<e)/onst Seperator +s String V 6 f &e.2indowState V vb&inimi<ed Then &e.'ide 3nd f %n 3rror .esume ,e"t 5\ resi<e controls 5F .T=/hat.2idth V frm&ain.Scale2idth $ .T=/hat.*eft $ lst=uddys.2idth $ Seperator d E lst=uddys.*eft V frm&ain.Scale2idth $ lst=uddys.2idth $ Seperator .T=&essage.2idth V frm&ain.Scale2idth $ .T=&essage.*eft $ lst=uddys.2idth $ Seperator d E frame=uttons.*eft V lst=uddys.*eft 5I .T=/hat.'eight V &e.Scale'eight $ .T=&essage.'eight $ Status=ar.'eight $ Seperator d Q lst=uddys.'eight V .T=/hat.'eight .T=&essage.Top V &e.Scale'eight $ .T=&essage.'eight $ Status=ar.'eight $ Seperator frame=uttons.Top V .T=&essage.Top 5 !lace$Shapes shp/hat.&ove .T=/hat.*eft $ ?, .T=/hat.Top $ ?, .T=/hat.2idth M E, .T=/hat.'eight ME shp=uddy.&ove lst=uddys.*eft $ ?, lst=uddys.Top $ ?, lst=uddys.2idth M E, lst=uddys.'eight M E shp&essage.&ove .T=&essage.*eft $ ?, .T=&essage.Top $ ?, .T=&essage.2idth M E, .T=&essage.'eight M E .T=&essageXHey0p 0, 0 3nd Sub

!rivate Sub 4ormX0nload)/ancel +s nteger(im 4rm +s 4orm f mod(eclaration.b*oadedfrmTransfer Then frmTransfer.tmr3nd.3nabled V True 3nd f f mod(eclaration.b*oadedfrmVoice Then 0nload frmVoice 3nd f 4or 3ach 4rm n V=.4orms 4rm.'ide ,e"t 4rm (o3vents 4or 3ach 4rm n V=.4orms 0nload 4rm Set 4rm V ,othing ,e"t 4rm mod4unctionsE.Save%ptions modSysTray..emTray mod.T='ighlight.(isable0.*(etect mod.esi<e.0nhook o&agnetic2nd..emove2indow hwnd Set o&agnetic2nd V ,othing %n 3rror .esume ,e"t f mod(eclaration.Saved%ptions.Save'istory Then &k(ir +pp.!ath T O]historyO .T=/hat.Save4ile +pp!ath T O]'istory]O T Det(ate T O.rtfO 3nd f %n 3rror DoTo 0 wsc./lose 5 3nd 5 This is the 3nd 5 my only friend the end 5 lalalalalalalalalalallalalla 3nd Sub !rivate Sub Dive0p+dmin)0sername +s String+ddTe"tTo.T= 0sername T O has abandoned its administrator privileges^O, 3vent/olor, True, True 3nd Sub !rivate Sub imgSmilieX/lick) nde" +s nteger.T=&essage.SelTe"t V mod(eclaration.Smilie+rray) nde"-./har/ode picSmilies/ontainer.Visible V 4alse 3nd Sub !rivate Sub imgSmilieX&ouse&ove) nde" +s nteger, X =utton +s nteger, X

Shift +s nteger, X F +s Single, X I +s Single(im +s nteger 4or V 0 To imgSmilie./ount $ ? imgSmilie) -.=orderStyle V f)) V nde"-, ?, 0,e"t 3nd Sub !rivate Sub is=utton?X/lick)picSmilies/ontainer.Visible V 4alse 3nd Sub !rivate Sub Hick)+dmin,ame +s String, X 0sername +s String+ddTe"tTo.T= +dmin,ame T O hat O T 0sername T O gekicked^O, 3vent/olor, True, True 3nd Sub !rivate Sub HickVoice)+dmin,ame +s String, X 0sername +s String+ddTe"tTo.T= +dmin,ame T O has O T 0sername T O from Voice/hat gekicked^O, 3vent/olor, True, True 3nd Sub !rivate Sub *ogin)*oginString +s String5 \ 'ere, the server sends back whether he has accepted 0sername 1 !assword f *oginString V OacceptO Then tmr*ogin.3nabled V 4alse Status=ar.SimpleTe"t V OThe server accepts the login re#uest...O 5 so ... sign$up process successfully $ from here is testing whether you are online tmr/onnection/heck.3nabled V True /onnected 3lse 5,%T *%D ,ST. ,D... f *oginString V OdenyO Then Status=ar.SimpleTe"t V OThe server did not accept the login re#uest... 2rong !asswordUO (isconnected Sign n 3nd f 3nd f 3nd Sub

!rivate Sub *ogin+dmin)0sername +s String+ddTe"tTo.T= 0sername T O hat seine +dministrator$!rivilegien wiedererlangt^O, 3vent/olor, True, True 3nd Sub !rivate Sub lst=uddysX4ile(rag(rop)4ilename +s String(im To0ser +s String To0ser V lst=uddys.*ist tems)lst=uddys.Selected temf *en=)To0ser- V 0 Then 3"it Sub f mod(eclaration.Sending%r.eceiving4ile Then &sg=o" OSend or receive a file already.O 3lse 5&%((3/*+.+T %,.S3,( ,D%..3/3 V ,D4 *3 V 4+*S310 f ,ot To0ser V mod(eclaration.0sername Then mod(eclaration.Sending%r.eceiving4ile V True mod(eclaration.!ath%f4ileToSend%r.eceive V 4ilename f ,ot 4ile3"ists)4ilename- Then mod(eclaration.Sending%r.eceiving4ile V 4alse &sg=o" OThe soecified file does not e"ist^O, vb nformation 3lse 5,%T ,%T... mod(eclaration..eceiver%rSender V To0ser Send(ata OfileWO T To0ser T OWO T mod4unctions.3"tract4ilename)4ilename- T OWO T mod4unctions.Det4ile*en)4ilename3nd f 3lse 5,%T ,%T... &sg=o" OIou can not send files to yourself^O, vb nformation 3nd f 3nd f 3nd Sub !rivate Sub lst ntelliSenseX(bl/lick).T=&essage.Te"t V O]]O T lst ntelliSense.Te"t .T=&essage.SelStart V *en).T=&essage.Te"tlst ntelliSense.Visible V 4alse ntelliVisible V 4alse .T=&essage.Set4ocus 3nd Sub !rivate Sub &ake+dmin)+dmin,ame +s String, X 0sername +s String+ddTe"tTo.T= +dmin,ame T O has O T 0sername T O +dministrator privileges granted^O, 3vent/olor, True, True 3nd Sub !rivate Sub &essage)0sername +s String, X &essage +s String, X +dmin +s String-

5 \ one very normal message arrives5 +dd&essageTe"tTo.T= 0sername, &essage, 4alse, )+dmin V OtrueO4lash+ndSound 3nd Sub !rivate Sub mnu+boutX/lick)%n 3rror .esume ,e"t picSmilies/ontainer.Visible V 4alse frm+bout.Show 3nd Sub !rivate Sub mnu+udio+X/lick).un+udio+ssistant &e.hwnd 3nd Sub !rivate Sub mnu/lose&essengerX/lick)0nload &e 3nd Sub !rivate Sub mnu4ileTransferX/lick)cmdSend4ileX/lick 3nd Sub !rivate Sub mnu4ontX/lick)(im s4ont +s Selected4ont (im a4ont +s 4%,TX/%,ST %n 3rror DoTo eXTrap 4ont(ialog.i!ointSi<e V ?E d ?0 2ith .T=&essage a4ont.4ont=old V .Sel=old a4ont.4ont/olor V .Sel/olor a4ont.4ont talic V .Sel talic a4ont.4ont,ame V .Sel4ont,ame a4ont.4ontSi<e V .Sel4ontSi<e a4ont.4ontStrikeThru V .SelStrikeThru a4ont.4ont0nderline V .Sel0nderline s4ont V Show4ont)hwnd, a4ontf s4ont.b/anceled V True Then 3"it Sub .Sel4ont,ame V s4ont.sSelected4ont .Sel4ontSi<e V s4ont.nSi<e 5.Sel/olor V s4ont.l/olor .Sel=old V s4ont.b=old

.Sel talic V s4ont.b talic .Sel0nderline V s4ont.b0nderline .SelStrikeThru V s4ont.bStrike%ut 3nd 2ith 5.T=&3SS+D3 5 the same in the struct speciher !rofile 2ith mod(eclaration.Saved%ptions.4ont .4ont=old V .T=&essage.Sel=old 5.4ont/olor V .T=&essage.Sel/olor .4ont talic V .T=&essage.Sel talic .4ont,ame V .T=&essage.Sel4ont,ame .4ontSi<e V .T=&essage.Sel4ontSi<e .4ontStrikeThru V .T=&essage.SelStrikeThru .4ont0nderline V .T=&essage.Sel0nderline 3nd 2ith 5&%((3/*+.+T %,.S+V3(%!T %,S.4%,T .T=&essage.Set4ocus eXTrap7 3nd Sub !rivate Sub mnu4ont/olorX/lick)(im s/olor +s Selected/olor %n 3rror DoTo eXTrap s/olor.oSelected/olor V .T=&essage.Sel/olor s/olor V Show/olor)&e.hwnd, .T=&essage.Sel/olorf s/olor.b/anceled V True Then 3"it Sub .T=&essage.Sel/olor V s/olor.oSelected/olor .T=&essage.Set4ocus mod(eclaration.Saved%ptions.4ont.4ont/olor V s/olor.oSelected/olor eXTrap7 3nd Sub

!rivate Sub mnu'elpX/lick)f 4ile3"ists)+pp!ath T O]help.t"tO- Then Shell3"ecute hwnd, vb,ullString, +pp!ath T O]help.t"tO, vb,ullString, vb,ullString, C 3lse &sg=o" O/ould 5help.t"t5 not available^O, vb/ritical 3nd f 3nd Sub !rivate Sub mnu*og%utX/lick)(isconnected Sign n 3nd Sub !rivate Sub mnu&%ptionsX/lick)frm%ptions.Show

3nd Sub !rivate Sub mnu,udgeX/lick)cmd,udgeX/lick 3nd Sub !rivate Sub mnu%ptionsX/lick)picSmilies/ontainer.Visible V 4alse 3nd Sub !rivate Sub mnu%ther0serX/lick)picSmilies/ontainer.Visible V 4alse 3nd Sub !rivate Sub mnuprivate&essageX/lick)cmd!rivate&essageX/lick 3nd Sub !rivate Sub mnuSend&essageX/lick)cmdSendX/lick 3nd Sub !rivate Sub mnuSmiliesX/lick)(im +s nteger %n 3rror .esume ,e"t picSmilies/ontainer.Visible V ,ot picSmilies/ontainer.Visible 4or V 0 To imgSmilie./ount $ ? imgSmilie) -.=orderStyle V 0 ,e"t picSmilies/ontainer.Set4ocus 3nd Sub !rivate Sub mnuV=&essengerX/lick)picSmilies/ontainer.Visible V 4alse 3nd Sub !rivate Sub mnuVoice/hatX/lick)picSmilies/ontainer.Visible V 4alse f ,ot b*oadedfrmVoice Then

Send(ata OaskvoiceO 3nd f 3nd Sub !rivate Sub ,udge)0sername +s String, X +dmin +s String5 \ ,udge one arrives +ddTe"tTo.T= 0sername T f)+dmin V OtrueO, O )+dministrator-O, OO- T O them has a 5,udge5 gesendetO, 3vent/olor, True, True !laySound ,udgeSend%r.eceived mod4unctions.Shake4orm frm&ain, C, ?000 3nd Sub !rivate Sub ,udge=)0sername +s String, X +dmin +s String5 \ confirmation that it has sent a nudge to jmd so that we ourselves also 5 to suffer a bit, we also raised the nudge !laySound ,udgeSend%r.eceived +ddTe"tTo.T= OSie haben einen 5,udge5 an O T 0sername T O gesendetO, 3vent/olor, True, True mod4unctions.Shake4orm frm&ain, C, ?000 3nd Sub !rivate Sub picSmilies/ontainerX*ost4ocus)picSmilies/ontainer.Visible V 4alse 3nd Sub !rivate Sub picTrayX&ouse&ove)=utton +s nteger, X Shift +s nteger, X F +s Single, X I +s SingleStatic lng&sg +s *ong lng&sg V F 1 Screen.Twips!er!i"elF Select /ase lng&sg /ase 2&X*=0TT%,(=*/*H %n 3rror .esume ,e"t frm&ain.2indowState V vb,ormal frm&ain.Show %n 3rror DoTo 0 3nd Select 3nd Sub

!rivate Sub !rivate&essage)0sername +s String, X &essage +s String, X +dmin +s String5 \ a private message to come +dd&essageTe"tTo.T= 0sername, &essage, True, )+dmin V OtrueO4lash+ndSound 3nd Sub !rivate Sub !rivate&essage=)0sername +s String, X &essage +s String, X +dmin +s String5 \ /onfirmation that one has received a private message +dd&essageTe"tTo.T= mod(eclaration.0sername, &essage, True, )+dmin V OtrueO5+ddTe"tTo.T= OYO T mod(eclaration.0sername T OZYSie haben eine private &essage O T 0sername T O sentZ O T &essage, , )+dmin V OtrueO-, True 4lash+ndSound 3nd Sub !rivate Sub .T=/hatX/hange)mod4unctions..efresh.T= .T=/hat 3nd Sub !rivate Sub rtbmessageX/hange)cmdSend.3nabled V ,ot *en=).T=&essage.Te"t- V 0 f *en=).T=&essage.Te"t- V 0 Then 2ith .T=&essage .Sel4ont,ame V mod(eclaration.Saved%ptions.4ont.4ont,ame .Sel4ontSi<e V mod(eclaration.Saved%ptions.4ont.4ontSi<e .Sel/olor V mod(eclaration.Saved%ptions.4ont.4ont/olor .Sel=old V mod(eclaration.Saved%ptions.4ont.4ont=old .Sel talic V mod(eclaration.Saved%ptions.4ont.4ont talic .Sel0nderline V mod(eclaration.Saved%ptions.4ont.4ont0nderline .SelStrikeThru V mod(eclaration.Saved%ptions.4ont.4ontStrikeThru 3nd 2ith 5.T=&3SS+D3 3nd f 3nd Sub !rivate Sub .T=&essageXHey(own)Hey/ode +s nteger, X Shift +s ntegerf )Hey/ode V QE %r Hey/ode V ?Q- +nd ntelliVisible Then .T=&essage.Te"t V O]]O T lst ntelliSense.Te"t .T=&essage.SelStart V *en).T=&essage.Te"tlst ntelliSense.Visible V 4alse ntelliVisible V 4alse

f Hey/ode V QE Then Hey/ode V 0 3nd f 3nd Sub !rivate Sub .T=&essageXHey!ress)Hey+scii +s ntegerf Hey+scii V ?Q Then cmdSendX/lick Hey+scii V 0 3"it Sub 3nd f f ,ot tmrType.3nabled Then Send(ata OtypingWtrueO 3nd f tmrType.3nabled V 4alse tmrType.3nabled V True 3nd Sub !rivate Sub .T=&essageXHey0p)Hey/ode +s nteger, X Shift +s nteger(im Te"t3ntered +s String (im 4ound +s nteger (im +s nteger f *en).T=&essage.Te"t- ; E Then Te"t3ntered V &ide).T=&essage.Te"t, Q, *en).T=&essage.Te"t-3nd f f *efte).T=&essage.Te"t, E- V O]]O Then ntelliVisible V True 5 general map )]] ]] at the start4ound V $? 4or V 0 To lst ntelliSense.*ist/ount $ ? f *efte)lst ntelliSense.*ist) -, *en)Te"t3ntered-- V Te"t3ntered Then f ,ot *en)lst ntelliSense.*ist) -- V *en)Te"t3ntered- Then 4ound V 3nd f 3"it 4or 3nd f ,e"t f 4ound V $? Then ntelliVisible V 4alse 5 wenns can not be found in the bo", then no 3lse 5,%T 4%0,(... lst ntelliSense.Selected)4ound- V True 3nd f 3lse 5,%T *34Te).T=&3SS+D3.T3FT,... ntelliVisible V 4alse 3nd f f ntelliVisible Then lst ntelliSense.Top V .T=&essage.Top M mod4unctions.DetT/ursI M E lst ntelliSense.*eft V .T=&essage.*eft M mod4unctions.DetT/ursF M B lst ntelliSense.Visible V True 3lse 5 ,T3** V S =*3 V 4+*S310

lst ntelliSense.Visible V 4alse 3nd f 3nd Sub !ublic Sub Send(ata)Te"t +s Stringf wsc.State V @ Then wsc.Send(ata Te"t T Seperator 3nd f 3nd Sub !rivate Sub Sign n)mod(eclaration.Sign n V 4alse frm/onnect.Show vb&odal f ,ot mod(eclaration.Sign n Then 0nload &e 3lse 5,%T ,%T... /aption V OV=&essenger $ .egistered as O T mod(eclaration.0sername wsc./onnect mod(eclaration.Server !, A? 3nd f 3nd Sub !rivate Sub tmr/onnectXTimer)5 \ it is ?0sec long tried to connect to Time%ut/ V Time%ut/ M ? f wsc.State V @ Then Time%ut/ V 0 Status=ar.SimpleTe"t V O.elation... Send *ogin .e#uest...O tmr/onnect.3nabled V 4alse tmr*ogin.3nabled V True Send(ata OloginWO T mod(eclaration.0sername T OWO T mod(eclaration.0ser!ass 3"it Sub 3nd f f Time%ut/ V ?0 Then Status=ar.SimpleTe"t V O t could not be contacted...O (isconnected Sign n 3nd f 3nd Sub !rivate Sub tmr/onnection/heckXTimer)5 \ once the connection is this timer is active and check whether they still 5 is connected to the server f wsc.State V 0 %r wsc.State V A Then Status=ar.SimpleTe"t V OThey were separated from the server...O

(isconnected Sign n 3nd f 3nd Sub !rivate Sub tmrDet(ataXTimer)5The check comes in a timerU 52'IU 5 t5s simple .... 5+ccepted, it goes to a message, and that is precisely verarbeitei in this loop, 5=ut in 2insock (ataX+rrival. Then there are big problems if (uring these (erivative 2ork, a 5+nother packet arrived^ )sounds funny, but it iss(im temp +s *ong (o 2hile nStr)?, .eceive=uffer, Seperator- ; 0 temp V nStr)?, .eceive=uffer, Seperatorf temp ; ? Then 4i"ed(ata+rrival *efte).eceive=uffer, temp $ ?3nd f .eceive=uffer V &ide).eceive=uffer, temp M *en)Seperator-*oop 3nd Sub !rivate Sub tmr*oginXTimer)5 \ + timeout timer ... will be disabled once the login has been accepted by the server 5 and enabled as soon as one is connected tmr*ogin.3nabled V 4alse Status=ar.SimpleTe"t V OThe server is not responding to the login re#uest...O (isconnected Sign n 3nd Sub !rivate Sub tmrTypeXTimer)tmrType.3nabled V 4alse Send(ata OtypingWfalseO 3nd Sub !rivate Sub 0pdate*st)0sername +s String, X %nline +s String5 \ The server sends the list of users 5 he does so only when a new user has logged on (im n*st +s =oolean

(im +s nteger (im 3 +s nteger (im Selected0ser +s String n*st V 4alse 5 you never know... 4or V ? To lst=uddys.*ist/ount f lst=uddys.*ist tems) - V 0sername Then n*st V True 3V 3"it 4or 3nd f ,e"t f %nline V OtrueO +nd ,ot n*st Then lst=uddys.+dd tem 0sername 3lse f ,ot %nline V OtrueO +nd n*st Then 5,%T %,* ,3... lst=uddys..emove )33nd f f %nline V OtrueO Then !laySound 0ser%nline 3nd Sub !rivate Sub 0serTyping)0sername +s String, X sTyping +s String, +dmin +s String(im +s nteger (im 3 +s nteger (im nType+rray +s =oolean (im Strte"t +s String 4or V ? To 0=ound)Typingf 0sername V Typing) -.0sername Then nType+rray V True 3V 3"it 4or 3nd f ,e"t f ,ot nType+rray Then .e(im !reserve Typing)0=ound)Typing- M ?3 V 0=ound)TypingTyping)3-.0sername V 0sername 3nd f Typing)3-.Typing V ) sTyping V OtrueO5 T%(% 3V0 4or V ? To 0=ound)Typingf Typing) -.Typing Then Strte"t V Strte"t T Typing) -.0sername T O,O 3V3M? 3nd f ,e"t f ,ot 3 V 0 Then Strte"t V *efte)Strte"t, *en)Strte"t- $ ?f 3 V ? Then Strte"t V Strte"t T O makes an entryO 3lse 5,%T 3...

Strte"t V Strte"t T O makes an entryO 3nd f 3nd f Status=ar.SimpleTe"t V Strte"t 5 $; there is an array, since the user only occurs once 5 $; The e now gives the stay in the array 3nd Sub

!rivate Sub Voice)0sername +s String, Voice3nabled +s String, +dmin +s Stringf Voice3nabled V OenabledO Then +ddTe"tTo.T= 0sername T O has entered the Voice /hatO, 3vent/olor, True, True 3lse +ddTe"tTo.T= 0sername T O has left the Voice /hatO, 3vent/olor, True, True 3nd f 3nd Sub !rivate Sub wscX(ata+rrival)=yVal bytesTotal +s *ong(im str(ata +s String wsc.Det(ata str(ata .eceive=uffer V .eceive=uffer T str(ata 3nd Sub !rivate Sub wscX3rror)=yVal ,umber +s nteger, X (escription +s String, X =yVal Scode +s *ong, X =yVal Source +s String, X =yVal 'elp4ile +s String, X =yVal 'elp/onte"t +s *ong, X /ancel(isplay +s =ooleanStatus=ar.SimpleTe"t V O t could not be contacted...O (isconnected Sign n 3nd Sub

S&reen !)'t *ogin

&ain

Sen" te.t

S#ile!

V'i&e &)$t

O,ti'n

Vous aimerez peut-être aussi