Laden...

Frage zu Datentransfer über Socket (WinCE)

Erstellt von gustavmega vor 11 Jahren Letzter Beitrag vor 11 Jahren 897 Views
G
gustavmega Themenstarter:in
78 Beiträge seit 2012
vor 11 Jahren
Frage zu Datentransfer über Socket (WinCE)

Hallo,

ich möchte für einen Barcodescanner mit Win CE 5 ein kleines Programm schreiben, dass damit die Datei "datei".txt" über Socket auf dem Zielrechner übertragen wird.
Ich verwende dafür Ultimate FTP CF class library und habe auch mit dem Programm Socket Tester als Server auf meinem Rechner getestet und die Verbindung besteht und kann auch auf dem Server als Konsolenausgabe eine Textausgabe machen.

Jetzt würde gerne wissen, ob mit dem Quellcode unten auch eine vollständige Datei, z.B. die Datei "datei.txt" auf dem Scanner zum Zielrechner gesendet werden kann?

Mein Programm sieht wie folgt aus:


using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;

namespace SocketTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                Atp.Net.ProxyClient sock = new Atp.Net.ProxyClient(AddressFamily.InterNetwork);
                IPAddress test = IPAddress.Parse("192.168.2.21");
                sock.Connect(test, 500);
                NetworkStream nsr = sock.GetStream();

                if (nsr.CanWrite)
                {
                    Stream reader = File.OpenRead("datei.txt");
                    byte[] buf = new byte[reader.Length];
                    reader.Read(buf, 0, buf.Length);
                    nsr.Write(buf, 0, buf.Length);
                    nsr.Close();
                    reader.Close();
                    sock.Close();
                }
                else
                {
                    sock.Close();
                    nsr.Close();
                    return;
                }
            }
            catch
            {
            }
        }
    }
}

Würde das ganze auch korrekt laufen und fehlerfrei funktionieren?
Da ich nicht weiß wie ich es testen kann, oder kennt ihr ein Programm wie Socket Tester, so dass nicht nur die Socketverbindung getestet wird sondern darüber auch Dateien empfangen werden kann?

Grüße,
G.M.

V
66 Beiträge seit 2010
vor 11 Jahren

Warum - wenn doch schliesslich eine Online-Verbindung besteht - verwendest Du für die Kommunikation nicht einfach einen Webservice?

G
gustavmega Themenstarter:in
78 Beiträge seit 2012
vor 11 Jahren

Warum - wenn doch schliesslich eine Online-Verbindung besteht - verwendest Du für die Kommunikation nicht einfach einen Webservice?

entschuldige, aber das verstehe ich nicht so richtig!?
Was meinst Du mit Webservice?

Grüße,
G.M.

V
66 Beiträge seit 2010
vor 11 Jahren

Naja, einen Webservice halt.

Also einen wie auch immer auf Serverseite bereitgestellten Service (der Einfachheit halber gerne einen SOAP-Webservice), der Dir den ganzen Protokoll-Overhead abnimmt.

Mit den Stichworten C#, Webservice,SOAP und Compact Framework solltest Du ein Fülle an Lesestoff erhalten.

G
gustavmega Themenstarter:in
78 Beiträge seit 2012
vor 11 Jahren

leider habe ich keinen Einfluss auf dem Server, ich muss nur für den Scanner ermöglichen, einen Socketverbindung aufzubauen und anschliessend die Daten rüberzukopieren.

Grüße,
G.M.

N
7 Beiträge seit 2012
vor 11 Jahren

Hi,

du sagst du verwendest eigentlich die Ultimate FTP CF class library.
D.h. auf dem Server läuft ein FTP Server?

Wieso schickst du dann die Dateienvia NetworkStream mit einem selbsterstellten Socket?

Nutze doch einfach die FTP class library zu verschicken deiner Dateien?

Der FTP Server erwaretet ja eine Kommunikation über das Filetransferprotokoll. Du schickst einfach die Datei drauf los...das wird nicht funktionieren.

Gruß,
nxexoxn