Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    2

    [C# 2010 WinForm e Console] Programma client-server che non trasmette da server a cl.

    Buongiorno: mi stavo occupando di un programma client(interfaccia grafica) - server (console), in cui il client chiede al server una particolare tipologia di file video (praticamente gliene chiede solo alcune parti) ed il server, in cui è allcoato il file, glielo deve trasmettere in dietro. Per ora la richiesta arriva ed il server genera il file modificato ma non lo ritrasmette. Allego il codice:

    codice:
    Client
    
    using System;
    using System.IO;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;
    
    namespace SVCAnalyzerWin3Client
    {
        public partial class Form1 : Form
        {
            private NetworkStream streamToServer;
            static BinaryWriter bw = new BinaryWriter(File.Create("out2.bin"));
    
            private int Run(string message)
            {
                int counter = 0;
                for (; ; )
                {
                    if (counter == 1000)
                    {
                        listBox1.Items.Add("Sending" + message + "to server.");
                        System.IO.StreamWriter writer = new System.IO.StreamWriter(streamToServer);
                        writer.WriteLine(message);
                        writer.Flush();
                        System.IO.StreamReader reader = new System.IO.StreamReader(streamToServer);
                        string strResponse = reader.ReadLine();
                        listBox1.Items.Add("Received: " + strResponse);
                        streamToServer.Close();
                        counter = 0;
                    }
                    else counter++;
                }
            }
    
            public Form1()
            {
                InitializeComponent();
                textBox1.Text = "out.bin";
                textBox2.Text = "192.168.1.9";
            }
    
    
            private void button3_Click(object sender, EventArgs e)
            {
                byte dependency = (byte)numericUpDown1.Value;
                byte quality = (byte)numericUpDown2.Value;
                byte temporal = (byte)numericUpDown3.Value;
                using (TcpClient client = new TcpClient(textBox2.Text, 10000))
                using (NetworkStream n = client.GetStream())
                {
                    BinaryWriter w = new BinaryWriter(n);
                    w.Write((byte) 0);
                    w.Write(dependency);
                    w.Write(quality);
                    w.Write(temporal);
                    w.Flush();
                    for (int i=0;i<140 ;i++ )
                    {
                        bw.Write(n.ReadByte());
                    }
                    n.Close();
                }
            }
    
            private void button4_Click(object sender, EventArgs e)
            {
                byte priority = (byte)numericUpDown4.Value;
                using (TcpClient client = new TcpClient(textBox2.Text, 10000))
                using (NetworkStream n = client.GetStream())
                {
                    BinaryWriter w = new BinaryWriter(n);
                    w.Write((byte) 1);
                    w.Write(priority);
                    w.Flush();
                    listBox1.Items.Add(new BinaryReader(n).ReadString());
                    for (int j=0;j<140 ;j++ )
                    {
                        bw.Write(n.ReadByte());
                    }
                    n.Close();
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                listBox1.Items.Clear();
            }
    
            private void numericUpDown1_ValueChanged(object sender, EventArgs e)
            {
    
            }
    
            private void numericUpDown2_ValueChanged(object sender, EventArgs e)
            {
    
            }
    
            private void numericUpDown3_ValueChanged(object sender, EventArgs e)
            {
    
            }
    
            private void numericUpDown4_ValueChanged(object sender, EventArgs e)
            {
    
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
            }
    
            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
            }
    
            private void label6_Click(object sender, EventArgs e)
            {
    
            }
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    2
    server

    codice:
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Net;
    using System.Net.Sockets;
    using System.Text;
    using System.IO;
    using System.Data;
    using System.Linq;
    using System.ComponentModel;
    
    namespace SCVAnalyzerWin3Server
    {
        public class AsynchNetworkServer
        {
            public int[] temp_id;
            public int[] dep_id;
            public int[] qual_id;
            
            class ClientHandler
            {
                int var;
                private byte[] bw2;
                private byte[] buffer;
                private Socket socket;
                private NetworkStream networkStream;
                private AsyncCallback callbackRead;
                private AsyncCallback callbackWrite;
                
                        
                public ClientHandler(Socket socketForClient)
                {
                    var = 2000000;
                    socket = socketForClient;
                    buffer = new byte[256];
                    bw2 = new byte[var];
                    networkStream = new NetworkStream(socketForClient);
                    callbackRead = new AsyncCallback(this.OnReadComplete);
                    callbackWrite = new AsyncCallback(this.OnWriteComplete);
                }
    
                public void StartRead()
                {
                    networkStream.BeginRead(buffer, 0, buffer.Length, callbackRead, null);
                }
    
    
                private void OnReadComplete(IAsyncResult ar)
                {
                    int bytesRead = networkStream.EndRead(ar);
                    if (bytesRead > 0)
                    {
                        Console.Write("Received {0} bytes from client: {1} {2} {3} {4} ", bytesRead, buffer[0], buffer[1], buffer[2], buffer[3]);
                        if (buffer[0] == 0)
                        {
                            int dependency = buffer[1];
                            int quality = buffer[2];
                            int temporal = buffer[3];
    
                            using (BinaryReader b = new BinaryReader(File.Open("out.bin", FileMode.Open)))
                            {
                                int pos = 0, j = 0;
                                int length = (int)b.BaseStream.Length;
                                byte bytes_char;
    
                                while (pos < length && j <= 606)
                                {
                                    bytes_char = b.ReadByte();
                                    if (riassunto[j].tipo == 14 || riassunto[j].tipo == 20)
                                    {
                                        if (riassunto[j].dependency <= dependency && riassunto[j].temporal <= quality && riassunto[j].quality <= quality)
                                        {
                                            bw.Write(bytes_char);
                                        }
                                    }
                                    else
                                    {
                                        bw.Write(bytes_char);
                                    }
    
    
                                    pos += sizeof(byte);
                                    if (riassunto[j + 1].posizione == pos)
                                        j++;
                                }
                            }
                        }
                        else
                        {
                            bw.Flush();
                            int priority = buffer[1];
    
                            using (BinaryReader b = new BinaryReader(File.Open("out.bin", FileMode.Open)))
                            {
                                int pos = 0, j = 0;
                                int length = (int)b.BaseStream.Length;
    
                                byte bytes_char;
    
                                while (pos < length && j <= 606)
                                {
                                    bytes_char = b.ReadByte();
                                    if (riassunto[j].tipo == 14 || riassunto[j].tipo == 20)
                                    {
                                        if (riassunto[j].priority <= priority)
                                        {
                                            bw.Write(bytes_char);
                                        }
                                    }
                                    else
                                    {
                                        bw.Write(bytes_char);
                                    }
                                    pos += sizeof(byte);
                                    if (riassunto[j + 1].posizione == pos)
                                        j++;
                                }
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Read connection dropped");
                        networkStream.Close();
                        networkStream = null;
                        socket = null;
                    }
                }
    
                private void OnWriteComplete(IAsyncResult ar)
                {
                    networkStream.EndWrite(ar);
                    Console.WriteLine("Write complete");
                    networkStream.BeginRead(buffer, 0, buffer.Length, callbackRead, null);
                }
            }
                public static void Main()
                {
                    using (BinaryReader bQuality = new BinaryReader(File.Open("out.bin", FileMode.Open)))
                    {
                        GetNALUQuality(bQuality);
                    }
                    
                    AsynchNetworkServer app = new AsynchNetworkServer();
                    app.Run();
    
                   
                }
    
                private void Run()
                {
                    IPAddress localAddr = IPAddress.Parse("192.168.1.9");
                    TcpListener tcpListener = new TcpListener(localAddr, 10000);
                    tcpListener.Start();
                    for (; ; )
                    {
                        Socket socketForClient = tcpListener.AcceptSocket();
                        Console.WriteLine("Client connected");
                        ClientHandler handler = new ClientHandler(socketForClient);
                        handler.StartRead();
                    }
                }
    
                
                static BinaryWriter bw = new BinaryWriter(File.Create("out2.bin"));
                static NALU[] riassunto = new NALU[608];
                
                public struct NALU
                {
                    public int posizione;
                    public int tipo;
                    public int quality;
                    public int dependency;
                    public int temporal;
                    public int priority;
                }
    
                private static void GetNALUQuality(BinaryReader bQuality)
                {
                    int pos = 0, field;
                    int length = (int)bQuality.BaseStream.Length;
                    byte[] bytes_chars = new byte[3];
                    int j = 0;
    
                    while (pos < (length - 2) && j <= 607)
                    {
                        bytes_chars = bQuality.ReadBytes(3);
                        field = ((bytes_chars[0] << 16) | (bytes_chars[1] << 8) | (bytes_chars[2])) & 0xffffff;
    
                        if (field == 1)
                        {
                            riassunto[j].posizione = pos;
    
                            int byteread = bQuality.ReadByte();
                            riassunto[j].tipo = byteread & 0x1F;
    
                            byteread = bQuality.ReadByte();
                            int mask = 0x3f;
                            riassunto[j].priority = byteread & mask;
    
                            byteread = bQuality.ReadByte();
                            mask = 0x70;
                            riassunto[j].dependency = (byteread & mask) >> 4;
                            mask = 0x0f;
                            riassunto[j].quality = byteread & mask;
    
                            byteread = bQuality.ReadByte();
                            mask = 0xe0;
                            riassunto[j].temporal = (byteread & mask) >> 5;
    
                            j++;
                            bQuality.BaseStream.Position -= 4;
                        }
                        bQuality.BaseStream.Position -= 2;
                        pos += sizeof(byte);
                    }
                }
    
                private static int GetNALUType(BinaryReader b)
                {
                    int type = b.ReadByte();
                    int mask = 0x1f;
                    return type & mask;
                }
    
                private void DecodeSVCHeaderExt(BinaryReader b)
                {
                    int byteread = b.ReadByte();
                    int mask = 0x3f;
                    int priority_id = byteread & mask;
                    byteread = b.ReadByte();
                    mask = 0x70;
                    int dependency_id = (byteread & mask) >> 4;
                    mask = 0x0f;
                    int quality_id = byteread & mask;
                    byteread = b.ReadByte();
                    mask = 0xe0;
                    int temporal_id = (byteread & mask) >> 5;
                    temp_id[temporal_id]++;
                    dep_id[dependency_id]++;
                    qual_id[quality_id]++;
            }     
        }
    }
    In particolare a console non viene stampata la scritta di avvenuta scrittura dal server al client ed il programma si impalla. Grazie.

  3. #3
    Ti ho modificato i due post aggiungendo il tag [ code ], che rende il codice senz'altro più leggibile.
    Chi non cerca trova.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.