Wrap text
Report abuse
|
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Net.Sockets;
using System.Net;
using System.Text;
namespace ChatClient
{
public partial class Page : UserControl
{
private Socket socket;
private byte[] transferBuffer;
private SocketAsyncEventArgs sendEventArgs;
private static int BUFFER_SIZE = 500;
private static int PORT = 4505;
private static DnsEndPoint IP_END_POINT = new DnsEndPoint(Application.Current.Host.Source.DnsSafeHost, PORT);
public delegate void SetTextCallback(String _text);
public Page()
{
InitializeComponent();
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SocketAsyncEventArgs connectEventArgs = new SocketAsyncEventArgs();
connectEventArgs.RemoteEndPoint = IP_END_POINT;
connectEventArgs.Completed += new EventHandler(connectEventArgs_Completed);
socket.ConnectAsync(connectEventArgs);
}
void connectEventArgs_Completed(object sender, SocketAsyncEventArgs e)
{
sendEventArgs = new SocketAsyncEventArgs();
sendEventArgs.RemoteEndPoint = IP_END_POINT;
e.Completed -= new EventHandler(connectEventArgs_Completed);
e.Completed += new EventHandler(receiveEventArgs_Completed);
transferBuffer = new byte[BUFFER_SIZE];
e.SetBuffer(transferBuffer, 0, transferBuffer.Length);
socket.ReceiveAsync(e);
}
void receiveEventArgs_Completed(object sender, SocketAsyncEventArgs e)
{
String a = Encoding.UTF8.GetString(transferBuffer, e.Offset, e.BytesTransferred);
SetText(a);
socket.ReceiveAsync(e);
}
private void SetText(String text)
{
if (this.Dispatcher.CheckAccess())
receiveBox.Text += text;
else
this.Dispatcher.BeginInvoke(new SetTextCallback(SetText), text);
}
private void sendButton_Click(object sender, RoutedEventArgs e)
{
List> l = new List>();
l.Add(new ArraySegment(Encoding.UTF8.GetBytes(sendBox.Text + "\n")));
sendEventArgs.BufferList = l;
socket.SendAsync(sendEventArgs);
}
}
}
|