client:
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace udptest
{
class Program
{
static void Main(string[] args)
{
byte[] data = new byte[1024];
string input, stringData;
Console.WriteLine("This is a Client, host name is {0}", Dns.GetHostName());
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8001);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
string welcome = "你好! ";
data = Encoding.UTF8.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ip);
EndPoint sender = new IPEndPoint(IPAddress.Any, 0);
data = new byte[1024];
int recv = 0;
try
{
recv = server.ReceiveFrom(data, ref sender);
Console.WriteLine("Message received from {0}: ", sender.ToString());
Console.WriteLine(Encoding.UTF8.GetString(data, 0, recv));
}
catch (ArgumentNullException e)
{
Console.WriteLine(e.Message);
}
catch (SocketException e)
{
Console.WriteLine(e.Message);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
while (true)
{
input = Console.ReadLine();
if (input == "exit")
break;
server.SendTo(Encoding.UTF8.GetBytes(input), sender);
data = new byte[1024];
recv = server.ReceiveFrom(data, ref sender);
stringData = Encoding.UTF8.GetString(data, 0, recv);
Console.WriteLine(stringData);
}
server.Close();
Console.WriteLine("Stopping Client.");
Console.ReadKey();
}
}
}
server:
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace server
{
class Program
{
static void Main(string[] args)
{
int recv;
byte[] data = new byte[1024];
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 8001);
Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
newsock.Bind(ip);
Console.WriteLine("This is a Server, host name is {0}", Dns.GetHostName());
Console.WriteLine("Waiting for a client");
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}: ", Remote.ToString());
Console.WriteLine(Encoding.UTF8.GetString(data, 0, recv));
string welcome = "你好 ! ";
data = Encoding.UTF8.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while (true)
{
data = new byte[1024];
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.UTF8.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
}
}
}
}