Передача сообщения от клиентов к серверу 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);