Socketproblem mit C#/C



  • Hi!
    Ich habe im Moment folgendes Probelm. Ich habe vor eine Client/Server-Anwendung für TCP/IP zu schreiben.
    Der Server ist bereits implementiert und zwar in C (das geht auch nicht anders, da er auf einem Microcontroller läuft).
    Jetzt möchte ich eine Client-Anwendung für den PC schreiben und zwar in C#. Dabei ist mir folgendes Problem begegnet:
    Ich kann einen Socket erstellen und eine Verbindung zum Server herstellen. Um Daten zu senden wollte ich Socket.Send() nutzen, aber damit kann ich nur Byte[] senden. D.h. ich erstelle einen String und wandle ihn mit Encoding.ASCII.GetBytes() in Byte um. Wenn ich ihn jetzt allerdings mit Socket.Send() sende, muss ich am Server wieder in String umwandeln. In C# wäre das kein Problem, da gibt es wieder eine entsprechende Funktion.
    Aber mit C habe ich keine Ahnung wie das gehen soll. Gibt es dafür eine Funktion in C? Bzw. gibt es vielleicht eine andere Funktion als Socket.Send() in C#, so dass ich einen String direkt versenden kann?

    Ich hoffe, dass das nicht allzu verwirrend war;-)
    Irgendwie ein bisschen schwer auszudrücken.
    Bin froh über jede Hilfe.

    Gruß
    uepae



  • hast du dir eig. nen tutorial über C# Socketprogrammierung angesehen?
    klar kannst du strings senden...

    http://www.microsoft.com/germany/msdn/library/net/csharp/CsharpTippsTeil2NetzwerkUndInternet.mspx?mfr=true



  • auch wenn du in c# einen string sendest, kommen uebers netz beim server nur bytes an. that's life - that's tcp/ip 😉

    aber die werte der bytes entsprechen den ascii codes der zeichen, die im string standen.

    das heisst, du packst die ganzen bytes, die du empfaengst in ein char-array und terminierst das dingen mit \0

    schon hast du einen c-string. (pass halt nur auf, dass du ASCII codes mit deinem client sendest und kein utf oder so)


Anmelden zum Antworten