Передача сообщения от клиентов к серверу Socket - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, сидел целые 2 сутки думал разберусь сам... но не тут то было... Суть проблемы: Надо написать службу которая через Socket будет ловить SQL запросы и взаимодействовать с базой, саму реализацию взаимодействия я сделал, все работает корректно, но тут я перешел к Socketу и все... понеслась, не могу сделать передачу сообщения и все, почти все смог сделать, и присоединение клиента и отсоединение (отлавливание этих моментов и вывод сообщений), но вот саму передачу сделать не могу, вот мой код, скажите что тут надо сделать, что-бы ловилось сообщение и писалось в richTextBox1 Класс Listener.cs
using System;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
 
namespace Server
{
    internal class Listener
    {
        private Socket s;
 
        public bool Listening { get; private set; }
 
        public int Port { get; private set; }
 
        public Listener(int port)
        {
            Port = port;
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
 
        public void Start()
        {
            if (Listening)
                return;
 
            s.Bind(new IPEndPoint(0, Port));
            s.Listen(0);
 
            s.BeginAccept(CallBack, null);
 
            Listening = true;
        }
 
        public void Stop()
        {
            if (!Listening)
                return;
            s.Close();
            s.Dispose();
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
 
        public void CallBack(IAsyncResult ar)
        {
            try
            {
                var socket = s.EndAccept(ar);
                if (SocketAccepted != null)
                {
                    SocketAccepted(socket);
                }
                s.BeginAccept(CallBack, null);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }
 
        public delegate void SocketAcceptedHandler(Socket e);
 
        public event SocketAcceptedHandler SocketAccepted;
    }
}
Server.cs
using System;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Windows.Forms;
 
namespace Server
{
    public partial class Form1 : Form
    {
        private static Listener l;
        private static List<Socket> sockets;
        public Form1()
        {
            InitializeComponent();
            l = new Listener(5003);
            sockets = new List<Socket>();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            l.SocketAccepted += l_SocketAccepted;
            l.Start();
        }
 
        void l_SocketAccepted(Socket e)
        {
            richTextBox1.Text = string.Format("New connection: {0}\n{1}\n==============", e.RemoteEndPoint, DateTime.Now);//кстати тут выбивает попытку доступа к объекту из потока в котором он не был создан.
            sockets.Add(e);
        }
    }
}
Client.cs
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
 
namespace Client
{
    public partial class Form1 : Form
    {
        private Socket s;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            s.Connect("127.0.0.1", 5003);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            var text = Encoding.ASCII.GetBytes(textBox1.Text);
            s.Send(text);
        }
    }
}
Заранее спасибо.
Тема все еще актуальна...

Решение задачи: «Передача сообщения от клиентов к серверу Socket»

textual
Листинг программы
s.Listen(0);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.643 из 5
Похожие ответы