<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FNetwork%2FChat</id>
		<title>Csharp/CSharp Tutorial/Network/Chat - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FNetwork%2FChat"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Network/Chat&amp;action=history"/>
		<updated>2026-04-29T12:32:40Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Network/Chat&amp;diff=6898&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Network/Chat&amp;diff=6898&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Network/Chat&amp;diff=6899&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Network/Chat&amp;diff=6899&amp;oldid=prev"/>
				<updated>2010-05-26T12:20:46Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Tcp Char 2==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;/*&lt;br /&gt;
Quote from &lt;br /&gt;
C# Network Programming&lt;br /&gt;
# Paperback: 656 pages&lt;br /&gt;
# Publisher: Sybex (November 26, 2002)&lt;br /&gt;
# Language: English&lt;br /&gt;
# ISBN-10: 0782141765&lt;br /&gt;
# ISBN-13: 978-0782141764&lt;br /&gt;
*/&lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Net;&lt;br /&gt;
using System.Net.Sockets;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
&lt;br /&gt;
class NewTcpChat : Form&lt;br /&gt;
{&lt;br /&gt;
   private static TextBox newText;&lt;br /&gt;
   private static ListBox results;&lt;br /&gt;
   private static ListBox hosts;&lt;br /&gt;
   private static Socket client;&lt;br /&gt;
   private static byte[] data = new byte[1024];&lt;br /&gt;
   public NewTcpChat()&lt;br /&gt;
   {&lt;br /&gt;
      Text = &amp;quot;New TCP Chat Program&amp;quot;;&lt;br /&gt;
      Size = new Size(400, 380);&lt;br /&gt;
      &lt;br /&gt;
      Label label1 = new Label();&lt;br /&gt;
      label1.Parent = this;&lt;br /&gt;
      label1.Text = &amp;quot;Enter text string:&amp;quot;;&lt;br /&gt;
      label1.AutoSize = true;&lt;br /&gt;
      label1.Location = new Point(10, 30);&lt;br /&gt;
      newText = new TextBox();&lt;br /&gt;
      newText.Parent = this;&lt;br /&gt;
      newText.Size = new Size(200, 2 * Font.Height);&lt;br /&gt;
      newText.Location = new Point(10, 55);&lt;br /&gt;
      results = new ListBox();&lt;br /&gt;
      results.Parent = this;&lt;br /&gt;
      results.Location = new Point(10, 85);&lt;br /&gt;
      results.Size = new Size(360, 10 * Font.Height);&lt;br /&gt;
      Label label2 = new Label();&lt;br /&gt;
      label2.Parent = this;&lt;br /&gt;
      label2.Text = &amp;quot;Active hosts&amp;quot;;&lt;br /&gt;
      label2.AutoSize = true;&lt;br /&gt;
      label2.Location = new Point(10, 240);&lt;br /&gt;
      hosts = new ListBox();&lt;br /&gt;
      hosts.Parent = this;&lt;br /&gt;
      hosts.Location = new Point(10, 255);&lt;br /&gt;
      hosts.Size = new Size(360, 5 * Font.Height);&lt;br /&gt;
      Button sendit = new Button();&lt;br /&gt;
      sendit.Parent = this;&lt;br /&gt;
      sendit.Text = &amp;quot;Send&amp;quot;;&lt;br /&gt;
      sendit.Location = new Point(220,52);&lt;br /&gt;
      sendit.Size = new Size(5 * Font.Height, 2 * Font.Height);&lt;br /&gt;
      sendit.Click += new EventHandler(ButtonSendOnClick);&lt;br /&gt;
      Button connect = new Button();&lt;br /&gt;
      connect.Parent = this;&lt;br /&gt;
      connect.Text = &amp;quot;Connect&amp;quot;;&lt;br /&gt;
      connect.Location = new Point(295, 20);&lt;br /&gt;
      connect.Size = new Size(6 * Font.Height, 2 * Font.Height);&lt;br /&gt;
      connect.Click += new EventHandler(ButtonConnectOnClick);&lt;br /&gt;
      Button listen = new Button();&lt;br /&gt;
      listen.Parent = this;&lt;br /&gt;
      listen.Text = &amp;quot;Listen&amp;quot;;&lt;br /&gt;
      listen.Location = new Point(295,52);&lt;br /&gt;
      listen.Size = new Size(6 * Font.Height, 2 * Font.Height);&lt;br /&gt;
      listen.Click += new EventHandler(ButtonListenOnClick);&lt;br /&gt;
      Thread fh = new Thread(new ThreadStart(findHosts));&lt;br /&gt;
      fh.IsBackground = true;&lt;br /&gt;
      fh.Start();&lt;br /&gt;
   }&lt;br /&gt;
   void ButtonListenOnClick(object obj, EventArgs ea)&lt;br /&gt;
   {&lt;br /&gt;
      results.Items.Add(&amp;quot;Listening for a client...&amp;quot;);&lt;br /&gt;
      Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);&lt;br /&gt;
      IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);&lt;br /&gt;
      newsock.Bind(iep);&lt;br /&gt;
      newsock.Listen(5);&lt;br /&gt;
      newsock.BeginAccept(new AsyncCallback(AcceptConn), newsock);&lt;br /&gt;
      Thread advertise = new Thread(new ThreadStart(srvrAdvertise));&lt;br /&gt;
      advertise.IsBackground = true;&lt;br /&gt;
      advertise.Start();&lt;br /&gt;
   }&lt;br /&gt;
   void ButtonConnectOnClick(object obj, EventArgs ea)&lt;br /&gt;
   {&lt;br /&gt;
      results.Items.Add(&amp;quot;Connecting...&amp;quot;);&lt;br /&gt;
      client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);&lt;br /&gt;
      string selectedhost = (string)hosts.SelectedItem;&lt;br /&gt;
      string[] hostarray = selectedhost.Split(&amp;quot;:&amp;quot;);&lt;br /&gt;
      IPEndPoint iep = new IPEndPoint(IPAddress.Parse(hostarray[1]), 9050);&lt;br /&gt;
      client.BeginConnect(iep, new AsyncCallback(Connected), client);&lt;br /&gt;
   }&lt;br /&gt;
   void ButtonSendOnClick(object obj, EventArgs ea)&lt;br /&gt;
   {&lt;br /&gt;
      byte[] message = Encoding.ASCII.GetBytes(newText.Text);&lt;br /&gt;
      newText.Clear();&lt;br /&gt;
      client.BeginSend(message, 0, message.Length, 0, new AsyncCallback(SendData), client);&lt;br /&gt;
   }&lt;br /&gt;
   void AcceptConn(IAsyncResult iar)&lt;br /&gt;
   {&lt;br /&gt;
      Socket oldserver = (Socket)iar.AsyncState;&lt;br /&gt;
      client = oldserver.EndAccept(iar);&lt;br /&gt;
      results.Items.Add(&amp;quot;Connection from: &amp;quot; + client.RemoteEndPoint.ToString());&lt;br /&gt;
      Thread receiver = new Thread(new ThreadStart(ReceiveData));&lt;br /&gt;
      receiver.IsBackground = true;&lt;br /&gt;
      receiver.Start();&lt;br /&gt;
   }&lt;br /&gt;
   void Connected(IAsyncResult iar)&lt;br /&gt;
   {&lt;br /&gt;
      try&lt;br /&gt;
      {&lt;br /&gt;
         client.EndConnect(iar);&lt;br /&gt;
         results.Items.Add(&amp;quot;Connected to: &amp;quot; + client.RemoteEndPoint.ToString());&lt;br /&gt;
         Thread receiver = new Thread(new ThreadStart(ReceiveData));&lt;br /&gt;
         receiver.IsBackground = true;&lt;br /&gt;
         receiver.Start();&lt;br /&gt;
      } catch (SocketException)&lt;br /&gt;
      {&lt;br /&gt;
         results.Items.Add(&amp;quot;Error connecting&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   void SendData(IAsyncResult iar)&lt;br /&gt;
   {&lt;br /&gt;
      Socket remote = (Socket)iar.AsyncState;&lt;br /&gt;
      int sent = remote.EndSend(iar);&lt;br /&gt;
   }&lt;br /&gt;
   void ReceiveData()&lt;br /&gt;
   {&lt;br /&gt;
      int recv;&lt;br /&gt;
      string stringData;&lt;br /&gt;
      while (true)&lt;br /&gt;
      {&lt;br /&gt;
         recv = client.Receive(data);&lt;br /&gt;
         stringData = Encoding.ASCII.GetString(data, 0, recv);&lt;br /&gt;
         if (stringData == &amp;quot;bye&amp;quot;)&lt;br /&gt;
            break;&lt;br /&gt;
         results.Items.Add(stringData);&lt;br /&gt;
      }&lt;br /&gt;
      stringData = &amp;quot;bye&amp;quot;;&lt;br /&gt;
      byte[] message = Encoding.ASCII.GetBytes(stringData);&lt;br /&gt;
      client.Send(message);&lt;br /&gt;
      client.Close();&lt;br /&gt;
      results.Items.Add(&amp;quot;Connection stopped&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
   }&lt;br /&gt;
   void srvrAdvertise()&lt;br /&gt;
   {&lt;br /&gt;
      Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);&lt;br /&gt;
      server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);&lt;br /&gt;
      IPEndPoint iep = new IPEndPoint(IPAddress.Broadcast, 9051);&lt;br /&gt;
      byte[] hostname = Encoding.ASCII.GetBytes(Dns.GetHostName());&lt;br /&gt;
      while (true)&lt;br /&gt;
      {&lt;br /&gt;
         server.SendTo(hostname, iep);&lt;br /&gt;
         Thread.Sleep(60000);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   void findHosts()&lt;br /&gt;
   {&lt;br /&gt;
      while(true)&lt;br /&gt;
      {&lt;br /&gt;
         Socket remoteHosts = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);&lt;br /&gt;
         IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9051);&lt;br /&gt;
         EndPoint ep = (EndPoint)iep;&lt;br /&gt;
         remoteHosts.Bind(iep);&lt;br /&gt;
         byte[] data = new byte[1024];&lt;br /&gt;
         int recv = remoteHosts.ReceiveFrom(data, ref ep);&lt;br /&gt;
         string stringData = Encoding.ASCII.GetString(data, 0, recv);&lt;br /&gt;
         string entry = stringData + &amp;quot;:&amp;quot; + ep.ToString();&lt;br /&gt;
         if (!hosts.Items.Contains(entry))&lt;br /&gt;
            hosts.Items.Add(entry);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   public static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      Application.Run(new NewTcpChat());&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tcp Chat==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;/*&lt;br /&gt;
Quote from &lt;br /&gt;
C# Network Programming&lt;br /&gt;
# Paperback: 656 pages&lt;br /&gt;
# Publisher: Sybex (November 26, 2002)&lt;br /&gt;
# Language: English&lt;br /&gt;
# ISBN-10: 0782141765&lt;br /&gt;
# ISBN-13: 978-0782141764&lt;br /&gt;
*/&lt;br /&gt;
using System;&lt;br /&gt;
using System.Drawing;&lt;br /&gt;
using System.Net;&lt;br /&gt;
using System.Net.Sockets;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Threading;&lt;br /&gt;
using System.Windows.Forms;&lt;br /&gt;
&lt;br /&gt;
class TcpChat : Form&lt;br /&gt;
{&lt;br /&gt;
   private static TextBox newText;&lt;br /&gt;
   private static ListBox results;&lt;br /&gt;
   private static Socket client;&lt;br /&gt;
   private static byte[] data = new byte[1024];&lt;br /&gt;
   public TcpChat()&lt;br /&gt;
   {&lt;br /&gt;
      Size = new Size(400, 380);&lt;br /&gt;
      &lt;br /&gt;
      Label label1 = new Label();&lt;br /&gt;
      label1.Parent = this;&lt;br /&gt;
      label1.Text = &amp;quot;Enter text string:&amp;quot;;&lt;br /&gt;
      label1.AutoSize = true;&lt;br /&gt;
      label1.Location = new Point(10, 30);&lt;br /&gt;
      newText = new TextBox();&lt;br /&gt;
      newText.Parent = this;&lt;br /&gt;
      newText.Size = new Size(200, 2 * Font.Height);&lt;br /&gt;
      newText.Location = new Point(10, 55);&lt;br /&gt;
      results = new ListBox();&lt;br /&gt;
      results.Parent = this;&lt;br /&gt;
      results.Location = new Point(10, 85);&lt;br /&gt;
      results.Size = new Size(360, 18 * Font.Height);&lt;br /&gt;
      Button sendit = new Button();&lt;br /&gt;
      sendit.Parent = this;&lt;br /&gt;
      sendit.Text = &amp;quot;Send&amp;quot;;&lt;br /&gt;
      sendit.Location = new Point(220,52);&lt;br /&gt;
      sendit.Size = new Size(5 * Font.Height, 2 * Font.Height);&lt;br /&gt;
      sendit.Click += new EventHandler(ButtonSendOnClick);&lt;br /&gt;
      Button connect = new Button();&lt;br /&gt;
      connect.Parent = this;&lt;br /&gt;
      connect.Text = &amp;quot;Connect&amp;quot;;&lt;br /&gt;
      connect.Location = new Point(295, 20);&lt;br /&gt;
      connect.Size = new Size(6 * Font.Height, 2 * Font.Height);&lt;br /&gt;
      connect.Click += new EventHandler(ButtonConnectOnClick);&lt;br /&gt;
      Button listen = new Button();&lt;br /&gt;
      listen.Parent = this;&lt;br /&gt;
      listen.Text = &amp;quot;Listen&amp;quot;;&lt;br /&gt;
      listen.Location = new Point(295,52);&lt;br /&gt;
      listen.Size = new Size(6 * Font.Height, 2 * Font.Height);&lt;br /&gt;
      listen.Click += new EventHandler(ButtonListenOnClick);&lt;br /&gt;
   }&lt;br /&gt;
   void ButtonListenOnClick(object obj, EventArgs ea)&lt;br /&gt;
   {&lt;br /&gt;
      results.Items.Add(&amp;quot;Listening for a client...&amp;quot;);&lt;br /&gt;
      Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);&lt;br /&gt;
      IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);&lt;br /&gt;
      newsock.Bind(iep);&lt;br /&gt;
      newsock.Listen(5);&lt;br /&gt;
      newsock.BeginAccept(new AsyncCallback(AcceptConn), newsock);&lt;br /&gt;
   }&lt;br /&gt;
   void ButtonConnectOnClick(object obj, EventArgs ea)&lt;br /&gt;
   {&lt;br /&gt;
      results.Items.Add(&amp;quot;Connecting...&amp;quot;);&lt;br /&gt;
      client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);&lt;br /&gt;
      IPEndPoint iep = new IPEndPoint(IPAddress.Parse(&amp;quot;127.0.0.1&amp;quot;), 9050);&lt;br /&gt;
      client.BeginConnect(iep, new AsyncCallback(Connected), client);&lt;br /&gt;
   }&lt;br /&gt;
   void ButtonSendOnClick(object obj, EventArgs ea)&lt;br /&gt;
   {&lt;br /&gt;
      byte[] message = Encoding.ASCII.GetBytes(newText.Text);&lt;br /&gt;
      newText.Clear();&lt;br /&gt;
      client.BeginSend(message, 0, message.Length, 0, new AsyncCallback(SendData), client);&lt;br /&gt;
   }&lt;br /&gt;
   void AcceptConn(IAsyncResult iar)&lt;br /&gt;
   {&lt;br /&gt;
      Socket oldserver = (Socket)iar.AsyncState;&lt;br /&gt;
      client = oldserver.EndAccept(iar);&lt;br /&gt;
      results.Items.Add(&amp;quot;Connection from: &amp;quot; + client.RemoteEndPoint.ToString());&lt;br /&gt;
      Thread receiver = new Thread(new ThreadStart(ReceiveData));&lt;br /&gt;
      receiver.Start();&lt;br /&gt;
   }&lt;br /&gt;
   void Connected(IAsyncResult iar)&lt;br /&gt;
   {&lt;br /&gt;
      try&lt;br /&gt;
      {&lt;br /&gt;
         client.EndConnect(iar);&lt;br /&gt;
         results.Items.Add(&amp;quot;Connected to: &amp;quot; + client.RemoteEndPoint.ToString());&lt;br /&gt;
         Thread receiver = new Thread(new ThreadStart(ReceiveData));&lt;br /&gt;
         receiver.Start();&lt;br /&gt;
      } catch (SocketException)&lt;br /&gt;
      {&lt;br /&gt;
         results.Items.Add(&amp;quot;Error connecting&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   void SendData(IAsyncResult iar)&lt;br /&gt;
   {&lt;br /&gt;
      Socket remote = (Socket)iar.AsyncState;&lt;br /&gt;
      int sent = remote.EndSend(iar);&lt;br /&gt;
   }&lt;br /&gt;
   void ReceiveData()&lt;br /&gt;
   {&lt;br /&gt;
      int recv;&lt;br /&gt;
      string stringData;&lt;br /&gt;
      while (true)&lt;br /&gt;
      {&lt;br /&gt;
         recv = client.Receive(data);&lt;br /&gt;
         stringData = Encoding.ASCII.GetString(data, 0, recv);&lt;br /&gt;
         if (stringData == &amp;quot;bye&amp;quot;)&lt;br /&gt;
            break;&lt;br /&gt;
         results.Items.Add(stringData);&lt;br /&gt;
      }&lt;br /&gt;
      stringData = &amp;quot;bye&amp;quot;;&lt;br /&gt;
      byte[] message = Encoding.ASCII.GetBytes(stringData);&lt;br /&gt;
      client.Send(message);&lt;br /&gt;
      client.Close();&lt;br /&gt;
      results.Items.Add(&amp;quot;Connection stopped&amp;quot;);&lt;br /&gt;
      return;&lt;br /&gt;
   }&lt;br /&gt;
   public static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      Application.Run(new TcpChat());&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>