hi,
Ich hatte mich mit norbert_E(sorry wenn das falsch geschrieben ist) unterhalten,wegen einem Problem.
Es handelt sich um ein Programm was den Desktop aufnimmt und dann diese Daten(Bilder) an einen Clienten schickt,der diese dann angezeigt bekommt(eine art Video).
Achja und glaubt mir ich hab schon 8 Stunden gegoogelt.
Quellcode(nur wesentlichste Teile,wei nobert_E es wollte):
Client:
Server:
Bei Fragen...bitte einfach fragen ^^
Mfg Gaara
Ich hatte mich mit norbert_E(sorry wenn das falsch geschrieben ist) unterhalten,wegen einem Problem.
Es handelt sich um ein Programm was den Desktop aufnimmt und dann diese Daten(Bilder) an einen Clienten schickt,der diese dann angezeigt bekommt(eine art Video).
Achja und glaubt mir ich hab schon 8 Stunden gegoogelt.
Quellcode(nur wesentlichste Teile,wei nobert_E es wollte):
Client:
Code:
try
{
serversocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
serversocket.Blocking = true ;
IPHostEntry IPHost = Dns.Resolve(connectTo);
IPAddress[] addr = IPHost.AddressList;
IPEndPoint ipepServer = new IPEndPoint(addr[0], 8090);
serversocket.Connect(ipepServer);
clientsocket = serversocket;
//System.Console.Write("Verbindung zum Server hergestellt!");
eins = "Verbindung zum Server hergestellt!";
this.label1.Text = this.label1.Text + eins;
Thread MainThread = new Thread(new ThreadStart(listenclient));
MainThread.Start();
}
catch
{
//System.Console.WriteLine("Fehler beim Aufbau der Verbindung!")
this.label1.Text = "Fehler beim Aufbau der Verbindung!";
}
.....
private void listenclient()
{
try
{
while (clientsocket != null)
{
byte []buffer = new byte[36769];
int iBytes = clientsocket.Receive(buffer);
//string rec = System.Text.Encoding.ASCII.GetString(buffer);
//rec = rec.Substring(0, iBytes);
MemoryStream ms = new MemoryStream(buffer);
Image im = Image.FromStream(ms);
this.pictureBox2.BackgroundImage = im;
this.label1.Text = "Bild übertragen";
}
}
catch
{
//Console.WriteLine("Error!");
this.label1.Text = "Error!";
}
}
Server:
Code:
void starteServer()
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
serverSocket.Blocking = true;
IPHostEntry IPHost = Dns.Resolve(this.serverIP);
IPAddress[] addr = IPHost.AddressList;
IPEndPoint ipepServer = new IPEndPoint(addr[0], 8090);
serverSocket.Bind(ipepServer);
serverSocket.Listen(10);
this.label2.Text = "Server wartet auf Client...";
//while ( true )
//{
this.clientsock = serverSocket.Accept();
if ( this.clientsock.Connected )
{
this.label2.Text = "Client connected...";
Thread tc = new Thread(new ThreadStart(listenclient));
tc.Start();
while (!tc.IsAlive);
}
//}
}
private void listenclient()
{
string command = ""; //Befehl als string
byte []bytes = new byte[1024]; //Befehl in bytes
while (clientsock!=null)
{
try
{
int rcount = clientsock.Receive(bytes, bytes.Length, 0);
command = System.Text.Encoding.ASCII.GetString(bytes);
command = command.Substring(0, rcount);
string []cmdlist = null;
cmdlist = command.Split(' ');
command = cmdlist[0];
}
catch
{
this.label2.Text = "Fehler beim Empfangen! Verbindung abgebrochen?";
clientsock.Close();
clientsock=null;
}
/////////////////////
//Command = get_File
/////////////////////
if (command == "get_File")
{
try
{
string pfad; //Pfad zur speziellen Beispieldatei
byte []puffer = new byte[36769]; //Puffer für gesendete Bytes
long lBytesRead=0; //wie viele Bytes wurden gelesen
long filesize=0; //wie groß ist die Datei
pfad ="testxxx.jpg";
FileInfo fi = new FileInfo(pfad);
if (fi.Exists)
{
this.label2.Text = "Datei wird zum Client übertragen!";
filesize = fi.Length;
FileStream fs = new FileStream(pfad, FileMode.Open, FileAccess.Read);
NetworkStream ns = new NetworkStream(clientsock);
while (lBytesRead < filesize && ns.CanWrite)
{
int iBytesRead = fs.Read(puffer, 0, puffer.Length);
ns.Write(puffer, 0, iBytesRead);
lBytesRead += iBytesRead;
}
fs.Close();
}
else
this.label2.Text = "Datei nicht gefunden!";
}
catch
{
this.label2.Text = "FEhler beim Senden! Steht die Verbindung noch?";
}
}
/////////////////////
//Command = UNGÜLTIG
/////////////////////
else
{
this.label2.Text = "Kein gültiger Befehl: {0}" + command;
}
} //while
}
Bei Fragen...bitte einfach fragen ^^
Mfg Gaara