class Program
{
static void Main(string[] args)
{
StartServerAync();
Console.ReadKey();
}
static byte[] dataBuffer = new byte[1024];
static void StartServerAync()
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress iPAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 4396);
serverSocket.Bind(iPEndPoint);
serverSocket.Listen(0);
serverSocket.BeginAccept(AcceptCallBack,serverSocket);
}
static void AcceptCallBack(IAsyncResult ar)
{
Socket serverSocket = ar.AsyncState as Socket;
Socket clientSocket = serverSocket.EndAccept(ar);
string msg = "Hello cilent! 你好。。。。";
byte[] data = System.Text.Encoding.UTF8.GetBytes(msg);
clientSocket.Send(data);
clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);
serverSocket.BeginAccept(AcceptCallBack, serverSocket);
}
static void ReceiveCallBack(IAsyncResult ar)
{
Socket clientSocket = null;
try
{
clientSocket = (Socket)ar.AsyncState;
int count = clientSocket.EndReceive(ar);
if(count==0)
{
clientSocket.Close();
return;
}
string msg = System.Text.Encoding.UTF8.GetString(dataBuffer, 0, count);
Console.WriteLine("收到一条消息:" +count+"-"+ msg);
clientSocket.BeginReceive(dataBuffer, 0, 1024, SocketFlags.None, ReceiveCallBack, clientSocket);
}
catch(Exception e)
{
Console.WriteLine(e);
if (clientSocket != null)
{
clientSocket.Close();
}
}
}
}
客户端
static void Main(string[] args)
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
clientSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"),4396));
byte[] data = new byte[1024];
int count = clientSocket.Receive(data);
string msg = System.Text.Encoding.UTF8.GetString(data, 0, count);
Console.WriteLine(msg);
while(true)
{
string s = Console.ReadLine();
if(s=="c")
{
clientSocket.Close();
return;
}
clientSocket.Send(System.Text.Encoding.UTF8.GetBytes(s));
}
Console.ReadKey();
clientSocket.Close();
}