Avatar billede todoonada Nybegynder
03. november 2004 - 14:21 Der er 10 kommentarer og
1 løsning

Send og Modtage data fra en PC til en anden PC vha. af C# program

Hej,

Nu er jeg gået lidt kold på det og søger derfor hjælp her på eksperten.dk.

Det går ud på at et C# program skal sende data(eks. et navn) til et andet C# program på en anden PC.

Nu har jeg set på andre spørgsmål og eks. På nettet, men er ikke kommet så meget vider med det.

Jeg har samlet de (to) programmer i et, så det er et program og man har derefter muligheden for at sende eller modtage i samme program.

Det eneste der nu mangler er de to funktioner som henholdsvis sender eller modtager, og så ville det jo være nice hvis der var nogen som lige kunne hjælpe med det?

Source:
-----------------------------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace program
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.TabControl main_tabControl;
        private System.Windows.Forms.TabPage send;
        private System.Windows.Forms.TabPage modtag;
        private System.Windows.Forms.Button luk;
        private System.Windows.Forms.Button main_send_senddata;
        private System.Windows.Forms.Label main_modtag_data;
        private System.Windows.Forms.Button main_modta_modtagedata;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.main_tabControl = new System.Windows.Forms.TabControl();
            this.send = new System.Windows.Forms.TabPage();
            this.modtag = new System.Windows.Forms.TabPage();
            this.luk = new System.Windows.Forms.Button();
            this.main_send_senddata = new System.Windows.Forms.Button();
            this.main_modtag_data = new System.Windows.Forms.Label();
            this.main_modta_modtagedata = new System.Windows.Forms.Button();
            this.main_tabControl.SuspendLayout();
            this.send.SuspendLayout();
            this.modtag.SuspendLayout();
            this.SuspendLayout();
            //
            // main_tabControl
            //
            this.main_tabControl.Controls.Add(this.send);
            this.main_tabControl.Controls.Add(this.modtag);
            this.main_tabControl.Location = new System.Drawing.Point(8, 8);
            this.main_tabControl.Name = "main_tabControl";
            this.main_tabControl.SelectedIndex = 0;
            this.main_tabControl.Size = new System.Drawing.Size(480, 208);
            this.main_tabControl.TabIndex = 0;
            //
            // send
            //
            this.send.Controls.Add(this.main_send_senddata);
            this.send.Location = new System.Drawing.Point(4, 22);
            this.send.Name = "send";
            this.send.Size = new System.Drawing.Size(472, 182);
            this.send.TabIndex = 0;
            this.send.Text = "send";
            //
            // modtag
            //
            this.modtag.Controls.Add(this.main_modta_modtagedata);
            this.modtag.Controls.Add(this.main_modtag_data);
            this.modtag.Location = new System.Drawing.Point(4, 22);
            this.modtag.Name = "modtag";
            this.modtag.Size = new System.Drawing.Size(472, 182);
            this.modtag.TabIndex = 1;
            this.modtag.Text = "modtag";
            //
            // luk
            //
            this.luk.Location = new System.Drawing.Point(8, 216);
            this.luk.Name = "luk";
            this.luk.Size = new System.Drawing.Size(480, 23);
            this.luk.TabIndex = 1;
            this.luk.Text = "Luk";
            this.luk.Click += new System.EventHandler(this.luk_Click);
            //
            // main_send_senddata
            //
            this.main_send_senddata.Location = new System.Drawing.Point(8, 8);
            this.main_send_senddata.Name = "main_send_senddata";
            this.main_send_senddata.TabIndex = 0;
            this.main_send_senddata.Text = "send data";
            this.main_send_senddata.Click += new System.EventHandler(this.main_send_senddata_Click);
            //
            // main_modtag_data
            //
            this.main_modtag_data.Location = new System.Drawing.Point(8, 64);
            this.main_modtag_data.Name = "main_modtag_data";
            this.main_modtag_data.Size = new System.Drawing.Size(456, 112);
            this.main_modtag_data.TabIndex = 0;
            this.main_modtag_data.Text = "her skal de sendet dataer komme.";
            this.main_modtag_data.Click += new System.EventHandler(this.main_modtag_data_Click);
            //
            // main_modta_modtagedata
            //
            this.main_modta_modtagedata.Location = new System.Drawing.Point(8, 8);
            this.main_modta_modtagedata.Name = "main_modta_modtagedata";
            this.main_modta_modtagedata.TabIndex = 1;
            this.main_modta_modtagedata.Text = "Opdate";
            this.main_modta_modtagedata.Click += new System.EventHandler(this.main_modta_modtagedata_Click);
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(496, 245);
            this.Controls.Add(this.luk);
            this.Controls.Add(this.main_tabControl);
            this.Name = "Form1";
            this.Text = "Form1";
            this.main_tabControl.ResumeLayout(false);
            this.send.ResumeLayout(false);
            this.modtag.ResumeLayout(false);
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void luk_Click(object sender, System.EventArgs e)
        {
            this.Close();
        }

        private void main_send_senddata_Click(object sender, System.EventArgs e)
        {
            // Her skal vi sende data!
        }

        private void main_modta_modtagedata_Click(object sender, System.EventArgs e)
        {
            // Her skal den så opdater label
        }

        private void main_modtag_data_Click(object sender, System.EventArgs e)
        {
            // Her kommet de sendet dataer !
        }
    }
}
-----------------------------------
Avatar billede arne_v Ekspert
03. november 2004 - 14:31 #1
Du skal vel bruge noget Socket kommunikation ? Eller ?
Avatar billede arne_v Ekspert
03. november 2004 - 14:34 #2
.NET har et nemt high level interface til Sockets i form af TCPClient og
TCPListener.

Super simpelt eksempel:

using System;
using System.IO;
using System.Net.Sockets;

class Client
{
    public static void Main(string[] args)
    {
        TcpClient client = new TcpClient("localhost", 1234);
        StreamWriter wrt = new StreamWriter(client.GetStream());
        StreamReader rdr = new StreamReader(client.GetStream());
        wrt.WriteLine("Jeg hedder Arne");
        wrt.Flush();
        Console.WriteLine(rdr.ReadLine());
        wrt.WriteLine("Dette er en test");
        wrt.Flush();
        Console.WriteLine(rdr.ReadLine());
        wrt.Close();
        rdr.Close();
        client.Close();
    }
}

og:

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;

class Server
{
    public static void Main(string[] args)
    {
        TcpListener server = new TcpListener(IPAddress.Any, 1234);
        server.Start();
        TcpClient client = server.AcceptTcpClient();
        StreamReader rdr = new StreamReader(client.GetStream());
        StreamWriter wrt = new StreamWriter(client.GetStream());
        string line;
        while((line = rdr.ReadLine()) != null)
        {
            wrt.WriteLine("Jeg har modtaget: " + line);
            wrt.Flush();
        }
        rdr.Close();
        wrt.Close();
        client.Close();
        server.Stop();
    }
}
Avatar billede todoonada Nybegynder
03. november 2004 - 14:41 #3
Hvordan skal jeg sæt det ind i min kode ?
Avatar billede arne_v Ekspert
03. november 2004 - 17:07 #4
Du bliver nødt til at beslutte hvem der skal connecte til hvem (hvem er client
og hvem er server).

Så skal:

        TcpClient client = new TcpClient("localhost", 1234);
        StreamWriter wrt = new StreamWriter(client.GetStream());
        StreamReader rdr = new StreamReader(client.GetStream());

i client init

        TcpListener server = new TcpListener(IPAddress.Any, 1234);
        server.Start();
        TcpClient client = server.AcceptTcpClient();
        StreamReader rdr = new StreamReader(client.GetStream());
        StreamWriter wrt = new StreamWriter(client.GetStream());

i server init

wrt.WriteLine(noget);

i send

string line = rdr.ReadLine();

i modtag
Avatar billede todoonada Nybegynder
04. november 2004 - 08:49 #5
jamen så må det jo være client der skal connecte til server ip: 192.168.1.12


    private void main_send_senddata_Click(object sender, System.EventArgs e)
        {
            // Her skal vi sende data!(client)
            TcpListener server = new TcpListener(IPAddress.Any, 1234);
            server.Start();
            TcpClient client = server.AcceptTcpClient();
            StreamReader rdr = new StreamReader(client.GetStream());
            StreamWriter wrt = new StreamWriter(client.GetStream());

            string line = rdr.ReadLine();
        }

    private void main_modta_modtagedata_Click(object sender, System.EventArgs e)
        {
            // Her skal den så opdater label(server)
            TcpClient client = new TcpClient("localhost", 1234);
            StreamWriter wrt = new StreamWriter(client.GetStream());
            StreamReader rdr = new StreamReader(client.GetStream());
        }

    private void main_modtag_data_Click(object sender, System.EventArgs e)
        {
            // Her er en Label hvor den sendet data skal skrives.
            wrt.WriteLine(noget);

        }
Avatar billede arne_v Ekspert
04. november 2004 - 19:00 #6
Virker det ?
Avatar billede todoonada Nybegynder
07. november 2004 - 13:02 #7
nej.
Avatar billede arne_v Ekspert
09. november 2004 - 23:33 #8
Her kommer et komplet eksempel.
Avatar billede arne_v Ekspert
09. november 2004 - 23:34 #9
TCP/IP server:

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

namespace DefaultNamespace
{
    public class MainForm : Form
    {
        private TextBox msgs;
        private TextBox sendmsg;
        private Button send;
       
        private TcpListener server;
        private TcpClient client;
        private StreamReader rdr;
        private StreamWriter wrt;

        public MainForm()
        {
            InitializeComponent();
            server = new TcpListener(IPAddress.Any, 1234);
            server.Start();
            client = server.AcceptTcpClient();
            rdr = new StreamReader(client.GetStream());
            wrt = new StreamWriter(client.GetStream());
            (new Thread(new ThreadStart(Reader))).Start();
        }
       
        [STAThread]
        public static void Main(string[] args)
        {
            Application.Run(new MainForm());
        }
       
        private void InitializeComponent() {
            sendmsg = new TextBox();
            msgs = new TextBox();
            send = new Button();
            SuspendLayout();

            msgs.Location = new Point(50, 50);
            msgs.Multiline = true;
            msgs.Size = new Size(500, 300);

            sendmsg.Location = new Point(50, 400);
            sendmsg.Size = new Size(500, 25);

            send.Location = new Point(50, 450);
            send.Size = new Size(500, 25);
            send.Text = "Send";
            send.Click += new System.EventHandler(SendClick);

            ClientSize = new Size(600, 525);
            Controls.Add(sendmsg);
            Controls.Add(msgs);
            Controls.Add(send);
            Text = "Chat (TCP/IP server)";
            ResumeLayout(false);
        }
       
        void SendClick(object sender, System.EventArgs e)
        {
            wrt.WriteLine(sendmsg.Text);
            wrt.Flush();
            lock(msgs)
            {
                msgs.Text += ("mig: " + sendmsg.Text + "\r\n");
            }
        }
       
        private void Reader()
        {
            string line;
            while((line = rdr.ReadLine()) != null)
            {
                lock(msgs)
                {
                    msgs.Text += ("dig: " + line + "\r\n");
                }
            }
        }
    }
}
Avatar billede arne_v Ekspert
09. november 2004 - 23:34 #10
TCP/IP client:

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

namespace DefaultNamespace
{
    public class MainForm : Form
    {
        private TextBox msgs;
        private TextBox sendmsg;
        private Button send;
       
        private TcpClient client;
        private StreamReader rdr;
        private StreamWriter wrt;

        public MainForm()
        {
            InitializeComponent();
            client = new TcpClient("localhost", 1234);
            rdr = new StreamReader(client.GetStream());
            wrt = new StreamWriter(client.GetStream());
            (new Thread(new ThreadStart(Reader))).Start();
        }
       
        [STAThread]
        public static void Main(string[] args)
        {
            Application.Run(new MainForm());
        }
       
        private void InitializeComponent() {
            sendmsg = new TextBox();
            msgs = new TextBox();
            send = new Button();
            SuspendLayout();

            msgs.Location = new Point(50, 50);
            msgs.Multiline = true;
            msgs.Size = new Size(500, 300);

            sendmsg.Location = new Point(50, 400);
            sendmsg.Size = new Size(500, 25);

            send.Location = new Point(50, 450);
            send.Size = new Size(500, 25);
            send.Text = "Send";
            send.Click += new System.EventHandler(SendClick);

            ClientSize = new Size(600, 525);
            Controls.Add(sendmsg);
            Controls.Add(msgs);
            Controls.Add(send);
            Text = "Chat (TCP/IP client)";
            ResumeLayout(false);
        }
       
        void SendClick(object sender, System.EventArgs e)
        {
            wrt.WriteLine(sendmsg.Text);
            wrt.Flush();
            lock(msgs)
            {
                msgs.Text += ("mig: " + sendmsg.Text + "\r\n");
            }
        }
       
        private void Reader()
        {
            string line;
            while((line = rdr.ReadLine()) != null)
            {
                lock(msgs)
                {
                    msgs.Text += ("dig: " + line + "\r\n");
                }
            }
        }
    }
}
Avatar billede arne_v Ekspert
09. november 2004 - 23:34 #11
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester