using System; using System.Threading; using System.Net.Sockets; using System.Net; namespace Test { public class TestClass { Socket sender; Socket receiver; byte[] sendbuffer; byte[] receivebuffer; public TestClass() { this.sendbuffer = new byte[1638400]; this.receivebuffer = new byte[1638400]; this.receiver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); this.sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); } public static void Main(string[] args) { TestClass t = new TestClass(); t.Start(); System.Threading.Thread.Sleep(10000); } delegate void TestDel(int number); public void Start() { this.receiver.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5123)); this.receiver.Listen(2); IAsyncResult result = receiver.BeginAccept(null, null); this.sender.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5123)); this.receiver = receiver.EndAccept(result); this.sender.BeginSend(sendbuffer, 0, sendbuffer.Length-10, SocketFlags.None, new AsyncCallback(EndSend), null); this.receiver.BeginReceive(receivebuffer, 0, receivebuffer.Length, SocketFlags.None, new AsyncCallback(EndReceive), null); } public void EndSend(IAsyncResult result) { TestDel d = new TestDel(PrintNumber); d(1); Console.WriteLine("Sent"); this.sender.EndSend(result); this.sender.BeginSend(sendbuffer, 0, sendbuffer.Length, SocketFlags.None, new AsyncCallback(EndSend), null); } public void EndReceive(IAsyncResult result) { TestDel d = new TestDel(PrintNumber); d(2); Console.WriteLine("Received"); this.receiver.EndReceive(result); this.receiver.BeginReceive(receivebuffer, 0, receivebuffer.Length, SocketFlags.None, new AsyncCallback(EndReceive), null); } public void PrintNumber(int number) { //Console.WriteLine(number); } } }