Problem: Python + Corba + Filetransfer

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
fr3sh
User
Beiträge: 3
Registriert: Mittwoch 20. Dezember 2006, 17:09
Wohnort: in da south of germany

Samstag 23. Dezember 2006, 12:33

Hallo,
ich muss für meine Vorlesung einen Chatserver auf CORBA Basis programmieren.
Alle Funktionen habe ich schon implementiert.
Jetzt benötige ich noch einen Filetransfer vom Client zum Server. Ich möchte Bilder übers Netzwerk mit Hilfe von Corba übertragen.

Dateien werden als Binary File geöffnet und in einen String umgewandelt.
Der String wird dann per RPC an den Server übertragen.

es kommt folgende Fehlermeldung, mit der ich nichts anfangen kann:

Code: Alles auswählen

TypeError: argument must be string without null bytes, not str

Mache ich das gleiche in einem Programm ohne Corba, funktioniert es problemlos.


meine IDL Datei:

Code: Alles auswählen

module Chat {
	interface ChatServer {
		long sign_on(in string name);
		void sign_off(in long clientid);
		string get_new_messages(in long clientid);
		void write_message(in long clientid, in string message);
		string get_userlist(in string separator);
		void send_file(in long clientid, in string file);
		string get_file(in string username);
	};
};
Datei auslesen und senden (Client):

Code: Alles auswählen

def getbinaryfileasstring(name):
	inp = open(name, "rb")
	dateistring = ""
	for line in inp:
		dateistring += line
	return dateistring

o.send_file(myid, getbinaryfileasstring("test.png"))

Implementierung auf Serverseite:

Code: Alles auswählen

def send_file(self, clientid, stringfile):
	tempuser = get_user_from_list(clientid)
	filename = self.filepath + tempuser.get_clientid() + ".png"
	outp = open(filename, "wb")
	outp.write(stringfile)
	outp.close()

Kann mir jemand helfen?? :-)

danke schon mal


ciao, fr3sh
BlackJack

Samstag 23. Dezember 2006, 15:06

fr3sh hat geschrieben:es kommt folgende Fehlermeldung, mit der ich nichts anfangen kann:

Code: Alles auswählen

TypeError: argument must be string without null bytes, not str
CORBA-Zeichenketten dürfen keine Nullbytes enthalten. Für beliebige binäre Daten muss man den CORBA-Typ `octet` benutzen.
fr3sh
User
Beiträge: 3
Registriert: Mittwoch 20. Dezember 2006, 17:09
Wohnort: in da south of germany

Mittwoch 27. Dezember 2006, 09:31

ah.... danke darauf bin ich noch garnicht gekommen.


Komisch kam mir nur immer vor, dass das ganze ohne Corba geklappt hat.

Ich teste es dann gleich mal :-)
Antworten