|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.10.2021, 18:07 | #1 |
Новичок
Джуниор
Регистрация: 22.10.2021
Сообщений: 1
|
отправка сообщения через сокет
Почему при первом запуске клиента цикл в сервере на отправку сообщения срабатывает 1 (выводит число1) раз при повторном запуске клиента срабатывает полностью (выводит 1 2 3 4)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Threading; namespace ServerTest { class Program { static byte[] buffer = new byte[2024]; static void Main(string[] args) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(new IPEndPoint(IPAddress.Parse("127.0.0 .1"), 45008)); socket.Listen(10); socket.BeginAccept(new AsyncCallback(ClientAccepted), socket); //принять попытку подключения Console.WriteLine("Server is ready!"); Console.Read(); } public static void ClientAccepted(IAsyncResult ar) { Console.WriteLine("client connect"); var socket = ar.AsyncState as Socket; var client = socket.EndAccept(ar); for (int i = 1; i < 5; i++) { client.Send(Encoding.UTF8.GetBytes( i.ToString())); } client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), client); socket.BeginAccept(new AsyncCallback(ClientAccepted), socket); } public static void ReceiveMessage(IAsyncResult ar) { try { var socket = ar.AsyncState as Socket; var length = socket.EndReceive(ar); var message = Encoding.Unicode.GetString(buffer, 0, length); Console.WriteLine(message); socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveMessage), socket); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } код клиента using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Sockets; using System.Net; namespace ClientTest { class Program { static void Main(string[] args) { var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect("localhost", 45008); Console.WriteLine("connect to the server"); socket.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveMessage), socket); var message = "Message from client : " + Console.ReadLine(); var outputBuffer = Encoding.Unicode.GetBytes(message); for (int i = 0; i < 5000; i++) { socket.BeginSend(outputBuffer, 0, outputBuffer.Length, SocketFlags.None, null, null); } Console.ReadLine(); } static byte[] buffer = new byte[1024]; public static void ReceiveMessage(IAsyncResult ar) { try { var socket = ar.AsyncState as Socket; var length = socket.EndReceive(ar); Console.WriteLine(length); var message = Encoding.UTF8.GetString(buffer, 0, length); Console.WriteLine(message); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отправка e-mail сообщения с форматированием через SMTP | chandrasecar | Работа с сетью в Delphi | 1 | 10.09.2014 21:29 |
Отправка RECORD через сокет | abort_halt | Работа с сетью в Delphi | 3 | 21.08.2013 20:06 |
Отправка картинки через сокет | Stepan_AVR | Работа с сетью в Delphi | 4 | 28.10.2011 16:58 |
Отправка сообщения через компонент RzSendMessage | artemavd | Работа с сетью в Delphi | 0 | 01.04.2010 07:43 |
Не работает отправка файла через сокет | SARGE | Работа с сетью в Delphi | 0 | 29.01.2009 13:29 |