private static void serverFunc(object obj) { Socket svrSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ipAddress = GetCurrentIPAddress(); if (ipAddress == null) { Console.WriteLine("No Lan card for IPv4"); return; } else { Console.WriteLine("Get IP : {0}", ipAddress.ToString()); } IPEndPoint endPoint = new IPEndPoint(ipAddress, 11200); svrSocket.Bind(endPoint); svrSocket.Listen(10); while (true) { Socket clntSocket = svrSocket.Accept(); AsyncStateData data = new AsyncStateData(); data.Buffer = new byte[1024]; data.Socket = clntSocket; clntSocket.BeginReceive(data.Buffer, 0, data.Buffer.Length, SocketFlags.None, asyncReceiveCallback, data); } }
private static void asyncReceiveCallback(IAsyncResult asyncReulst) { try { AsyncStateData rcvData = asyncReulst.AsyncState as AsyncStateData; int nRecv = rcvData.Socket.EndReceive(asyncReulst); string txt = Encoding.UTF8.GetString(rcvData.Buffer, 0, nRecv); byte[] sendBytes = Encoding.UTF8.GetBytes("Hello: " + txt); rcvData.Socket.BeginSend(sendBytes, 0, sendBytes.Length, SocketFlags.None, asyncSendCallback, rcvData.Socket); } catch (SocketException) { } }