Avatar billede th20 Nybegynder
01. februar 2005 - 11:14 Der er 14 kommentarer og
1 løsning

sende checksum og valider

Jeg skal have lavet et client/server program som kan checke om en checksum er valid. Det vil sige sende checksummen til server, undersøge om den er ok, send svar "ok" eller "ikke ok" tilbage til clienten. Hvor skal jeg starte? jeg har kigget lidt efter en chat eller ligende til windows, men har ikke fundet noget endnu jeg synes at kunne bruge.
Programmet skal laves i et windows miljø ikke console.

På forhånd tak for hjælpen.
Avatar billede arne_v Ekspert
01. februar 2005 - 19:06 #1
Der er network og threading koden til char client/server her:

http://www.eksperten.dk/spm/586462
Avatar billede arne_v Ekspert
01. februar 2005 - 19:07 #2
chat client/server
Avatar billede th20 Nybegynder
01. februar 2005 - 21:05 #3
jep det ligner meget af det jeg har set før. Jeg vil nu gerne have en windows platform, og jeg kan ikke rigtig finde ud af at få den consol udgave konverteret over til windows.
Avatar billede arne_v Ekspert
01. februar 2005 - 21:09 #4
Jeg har også et GUI eksempel men det er kun til 1 client.
Avatar billede arne_v Ekspert
01. februar 2005 - 21:10 #5
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
01. februar 2005 - 21:10 #6
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 th20 Nybegynder
01. februar 2005 - 21:37 #7
er det ikke c# ?
Avatar billede arne_v Ekspert
01. februar 2005 - 21:44 #8
sorry - jo - skal jeg oversætte ?
Avatar billede th20 Nybegynder
02. februar 2005 - 08:37 #9
Det ville være meget dejligt, er først lige ved at forstå vb.net, så et sprog mere lige nu vil ikke være så dejligt.
Avatar billede arne_v Ekspert
02. februar 2005 - 09:39 #10
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Threading

Namespace DefaultNamespace

    Public Class MainForm
    Inherits Form
        Private msgs As TextBox
        Private sendmsg As TextBox
        Private send As Button
        Private server As TcpListener
        Private client As TcpClient
        Private rdr As StreamReader
        Private wrt As StreamWriter

        Public Sub New()
            InitializeComponent
            server = New TcpListener(IPAddress.Any, 1234)
            server.Start
            client = server.AcceptTcpClient
            rdr = New StreamReader(client.GetStream)
            wrt = New StreamWriter(client.GetStream)
            call (New Thread(AddressOf Reader)).Start
        End Sub

        <STAThread()> _
        Public Shared Sub Main(ByVal args As String())
            Application.Run(New MainForm)
        End Sub

        Private Sub 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"
            AddHandler send.Click, AddressOf SendClick
            ClientSize = New Size(600, 525)
            Controls.Add(sendmsg)
            Controls.Add(msgs)
            Controls.Add(send)
            Text = "Chat (TCP/IP server)"
            ResumeLayout(False)
        End Sub

        Sub SendClick(ByVal sender As Object, ByVal e As System.EventArgs)
            wrt.WriteLine(sendmsg.Text)
            wrt.Flush
            SyncLock msgs
                msgs.Text += ("mig: " + sendmsg.Text + "" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
            End SyncLock
        End Sub

        Private Sub Reader()
            Dim line As String
            line = rdr.ReadLine
            While Not (line Is Nothing)
                SyncLock msgs
                    msgs.Text += ("dig: " + line + "" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
                End SyncLock
                line = rdr.ReadLine
            End While
        End Sub
    End Class
End Namespace
Avatar billede arne_v Ekspert
02. februar 2005 - 09:39 #11
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Threading

Namespace DefaultNamespace

    Public Class MainForm
    Inherits Form
        Private msgs As TextBox
        Private sendmsg As TextBox
        Private send As Button
        Private client As TcpClient
        Private rdr As StreamReader
        Private wrt As StreamWriter

        Public Sub New()
            InitializeComponent
            client = New TcpClient("localhost", 1234)
            rdr = New StreamReader(client.GetStream)
            wrt = New StreamWriter(client.GetStream)
            call (New Thread(AddressOf Reader)).Start
        End Sub

        <STAThread()> _
        Public Shared Sub Main(ByVal args As String())
            Application.Run(New MainForm)
        End Sub

        Private Sub 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"
            AddHandler send.Click, AddressOf SendClick
            ClientSize = New Size(600, 525)
            Controls.Add(sendmsg)
            Controls.Add(msgs)
            Controls.Add(send)
            Text = "Chat (TCP/IP client)"
            ResumeLayout(False)
        End Sub

        Sub SendClick(ByVal sender As Object, ByVal e As System.EventArgs)
            wrt.WriteLine(sendmsg.Text)
            wrt.Flush
            SyncLock msgs
                msgs.Text += ("mig: " + sendmsg.Text + "" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
            End SyncLock
        End Sub

        Private Sub Reader()
            Dim line As String
            line = rdr.ReadLine
            While Not (line Is Nothing)
                SyncLock msgs
                    msgs.Text += ("dig: " + line + "" & Microsoft.VisualBasic.Chr(13) & "" & Microsoft.VisualBasic.Chr(10) & "")
                End SyncLock
                line = rdr.ReadLine
            End While
        End Sub
    End Class
End Namespace
Avatar billede arne_v Ekspert
02. februar 2005 - 09:40 #12
Nu har du vist alle bygge klodserne.

Så skal du bare have dems at korrekt sammen til din applikation.
Avatar billede arne_v Ekspert
02. februar 2005 - 09:40 #13
og et svar
Avatar billede th20 Nybegynder
02. februar 2005 - 09:44 #14
SUPER!!!!!!

Jeg giver dig pointene nu, men kan først teste det senere. Jeg poster bare hvis jeg har nogle spørgsmål :D Mange tak for hjælpen endnu endnu engang, du er virkelig hjælpsom!!!
Avatar billede th20 Nybegynder
02. februar 2005 - 10:45 #15
Det virker perfekt, så skal jeg bare rette til så det passer til mit projekt :D rigtig dejligt.
Jeg var lidt lost da serveren ikke vises i processlinien, men mindre detalje.
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
Kurser inden for grundlæggende programmering

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