70 likes | 206 Views
Entwicklung verteilter Anwendungen I WS 2013/14 Prof. Dr. Herrad Schmidt. Kapitel 4 Sockets. Message Passing mittels Sockets (1) s.a. http://msdn.microsoft.com/en-us/library/system.net.sockets(VS.100).aspx
E N D
Entwicklung verteilter Anwendungen IWS 2013/14Prof. Dr. Herrad Schmidt Kapitel 4 Sockets
Message Passing mittels Sockets (1) s.a. http://msdn.microsoft.com/en-us/library/system.net.sockets(VS.100).aspx Informationen zwischen Client und Server werden als „ungetypte“ Nachrichten ausgetauscht. Sockets sind eine Sammlung von Funktionen, Datenstrukturen und Konventionen für die Netzwerkprogrammierung (Socket-Dienste). Über das API, hier speziell Winsock32-API, wird auf diese zugegriffen. Sie basieren auf dem Transmission Control Protocol (TCP) oder dem User Datagram Protocol (UDP). Sockets ermöglichen somit die Kommunikation zwischen Prozessen (Interprozesskommunikation, kurz IPC), die auf einem System oder zwei getrennten Systemen ablaufen können. Sie stellen die Verbindung zwischen Prozessen her. Die IPC kann synchron oder asynchron erfolgen.
Message Passing mittels Sockets (2) Durch den Socket-Aufruf wird über die Windows Sockets-Schnittstelle ein Socket-Dienst initialisiert. Dabei wird die Adressfamilie (z.B. für IP), der Sockettyp (z.B. Stream) und der Protokolltyp (z.B. TCP) angegeben. Der aufzubauende TCP/IP-Dienst wird durch die IP-Adresse des Servers und eine Portnummer eindeutig als Kommunikationsend-punkt definiert. Durch den bind-Aufruf wird der Kommunikationsendpunkt an den Socket gebunden. Der Serverprozess hört bei einem Socket mit dem listen-Aufruf das Netz ab. Ein Client-Prozess erzeugt einen eigenen Socket und verbindet sich über diesen mit dem Server-Socket. Die Daten werden in einen Strom geschrieben und vom Empfänger als Paket entgegengenommen.
Server You have four tasks to perform before a server can transfer data with a client connection: • Create a socket. • Bind the socket to a local IPEndPoint. • Place the socket in listen mode. • Accept an incoming connection on the socket. Client Now that you have a working TCP server, you can create a simple TCP client program to interact with it. There are only two steps required to connect a client program to a TCP server: • Create a socket. • Connect the socket to the remote server address. Quelle: http://www.codeproject.com/KB/IP/TCPIPChat.aspx?fid=262673&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=76 Das .NET Framework stellt Klassen zur Nutzung der Socket-Dienste zur Verfügung, siehe MSDN: http://msdn.microsoft.com/en-us/library/b6xa24z5(VS.100).aspx
Threads Ein Thread ist die Basiseinheit für die Zuordnung von CPU-Zeit. Innerhalb eines Prozesses können mehrere Threads „parallel“ ausgeführt werden. Managed Threading in .NET:http://msdn.microsoft.com/en-us/library/3e8s7xdd(VS.100).aspx Tutorial:http://msdn.microsoft.com/en-us/library/aa645740(VS.71).aspx
Solution 3_Sockets: A_SocketServer B_SocketClient C_SocketServerEncoding D_SocketClientEncoding E_Thread F_SocketServerThreads G_AsynchSocketServer H_AsynchSocketClient I_KlassenBibKomponist J_KomponistenServer K_KomponistenClient
Aufgabe 1) Schreiben Sie ein Client/Server-C#-Programm mit Sockets: Ein Client muss sich zunächst beim Server registrieren. Dazu sendet er ein entsprechendes Signal und seinen Namen an den Server. Dieser registriert den Namen und gibt eine Registrierungsnummer zurück, falls die maximale Anzahl von 5 Clients noch nicht erreicht ist. Für alle registrierten Clients wird beim Server ein Zustand verwaltet, der durch eine Nachricht des Clients (Identifizierung über die Registrierungsnummer) oder durch Veranlassung durch den Server selbst verändert wird, z.B. Anmeldung, Abmeldung, Anmeldeschluss, Krankmeldung o.ä. Der Client kann den Zustand abfragen oder auch die Registrierung beenden. Auf Anforderung kann am Server die Liste aller registrierten Client-Namen ausgegeben werden.