Передача сообщения от клиентов к серверу Socket - C#
Формулировка задачи:
Доброго времени суток, сидел целые 2 сутки думал разберусь сам... но не тут то было... Суть проблемы:
Надо написать службу которая через Socket будет ловить SQL запросы и взаимодействовать с базой, саму реализацию взаимодействия я сделал, все работает корректно, но тут я перешел к Socketу и все... понеслась, не могу сделать передачу сообщения и все, почти все смог сделать, и присоединение клиента и отсоединение (отлавливание этих моментов и вывод сообщений), но вот саму передачу сделать не могу, вот мой код, скажите что тут надо сделать, что-бы ловилось сообщение и писалось в richTextBox1
Класс Listener.cs
Server.cs
Client.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; } }
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); } } }
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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д