NSFileHandleExt

NSFileHandleExt ist eine Erweiterung für die Objective-C/Cocoa-Klasse NSFileHandle, die man für den Umgang mit Dateien und Sockets verwendet.

Diese Erweiterung fügt die Methoden +(id)fileHandleWithConnectionToHost:(NSString*)host toPort:(int)port; und -(NSString*)readLine; sowie -(void)writeLine:(NSString*)line; hinzu, welche Wrapper um die BSD-Sockets sind. Somit hat man eine einfache Möglichkeit, schnell und effizient auf den Socket zuzugreifen.

Methoden

+(id)fileHandleWithConnectionToHost:(NSString*)host toPort:(int)port

Diese Methode gibt ein neues NSFileHandle zurück, nachdem eine Verbindung mit dem angegeben Host auf dem angegeben Port hergestellt wurde. Konnte diese Verbindung nicht hergestellt werden, wird eine Exception ausgelöst.

-(NSString*)readLine

Diese Methode liest eine Zeile vom Socket und gibt sie zurück. Eine Zeile geht bis zum abschließenden "\n".

-(void)writeLine:(NSString*)line

Schreibt die angegebene Zeile mit einem abschließenden "\r\n" auf den Socket.

Kompatiblität

Ich habe diese Erweiterung sowohl unter Cocoa (auf Mac OS X 10.4.9) als auch unter GNUstep (1.11.2) verwendet :-).

Anwendungsbeispiel

Dieses Beispiel verbindet sich auf Port 80 des lokalen Rechners und sendet eine HTTP-Anfrage. Das Ergebnis des Servers wird im Logfenster ausgegeben. Anschließend wird die Verbindung geschlossen.

NS_DURING {
	NSFileHandle *connection = [NSFileHandle fileHandleWithConnectionToHost:@"localhost" toPort:80];
	[connection writeLine:@"GET / HTTP/1.1"];
	[connection writeLine:@"Host: localhost"];
	[connection writeLine:@""];
	NSString *reply = [connection readLine];
	while ([reply length] > 0) {
		NSLog(@"Got line: %@", reply);
		reply = [connection readLine];
	}
	[connection closeFile];
} NS_HANDLER {
	NSLog(@"Error talking to server: %@", [localException reason]);
} NS_ENDHANDLER

Vor der Verwendung muss natürlich mittels #import "NSFileHandleExt.h" die Klasse eingebunden werden und die Dateien NSFileHandleExt.h und NSFileHandleExt.m zum Projekt hinzugefügt werden.

Herunterladen

Lizenz

NSFileHandleExt ist freie Open-Source-Software unter der BSD-Lizenz.

Entwicklung

Der aktuelle Entwicklungsstand kann in gitweb verfolgt werden.

Feedback

Solltest du mir eine Nachricht zukommen lassen wollen, schreib mir doch bitte eine E-Mail.