namespace
UDPServer
{
class
Program
{
static
void
Main(
string
[] args)
{
int
recv;
byte
[] data =
new
byte
[1024];
//构建TCP 服务器
//得到本机IP,设置TCP端口号
IPEndPoint ipep =
new
IPEndPoint(IPAddress.Any , 8001);
Socket newsock =
new
Socket(AddressFamily.InterNetwork
, SocketType.Dgram , ProtocolType.Udp);
//绑定网络地址
newsock.Bind(ipep);
Console.WriteLine(
"This is a Server, host name is {0}"
,Dns.GetHostName());
//等待客户机连接
Console.WriteLine(
"Waiting for a client..."
);
//得到客户机IP
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 .ASCII .GetString (data ,0,recv ));
//客户机连接成功后,发送欢迎信息
string
welcome =
"Welcome ! "
;
//字符串与字节数组相互转换
data = Encoding .ASCII .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 .ASCII .GetString (data ,0,recv));
newsock .SendTo (data ,recv ,SocketFlags .None ,Remote );
}
}
}
}
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Net;
using
System.Net.Sockets;
namespace
UDPClient
{
class
Program
{
static
void
Main(
string
[] args)
{
byte
[] data =
new
byte
[1024];
string
input ,stringData;
//构建TCP 服务器
Console.WriteLine(
"This is a Client, host name is {0}"
, Dns.GetHostName());
//设置服务IP,设置TCP端口号
IPEndPoint ipep =
new
IPEndPoint(IPAddress .Parse (
"127.0.0.1"
) , 8001);
//定义网络类型,数据连接类型和网络协议UDP
Socket server =
new
Socket(AddressFamily.InterNetwork
, SocketType.Dgram, ProtocolType.Udp);
string
welcome =
"Hello! "
;
data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ipep);
IPEndPoint sender =
new
IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)sender;
data =
new
byte
[1024];
int
recv = server.ReceiveFrom(data,
ref
Remote);
Console.WriteLine(
"Message received from {0}: "
, Remote.ToString());
Console.WriteLine(Encoding .ASCII .GetString (data,0,recv));
while
(
true
)
{
input = Console .ReadLine ();
if
(input ==
"exit"
)
break
;
server .SendTo (Encoding .ASCII .GetBytes (input ),Remote );
data =
new
byte
[1024];
recv = server.ReceiveFrom(data,
ref
Remote);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine(stringData);
}
Console .WriteLine (
"Stopping Client."
);
server .Close ();
}
}
}
简单的UDP
try
{
Socket s =
new
Socket(AddressFamily.InterNetwork
, SocketType.Dgram, ProtocolType.Udp);
//向此网段发广播包
int
UDPListenerPort = 8082;
IPAddress broadcast = IPAddress.Parse(
"192.168.0.255"
);
//此处根据IP及子网掩码改为相应的广播IP
string
ts =
"This is UPD string for sending"
;
byte
[] sendbuf = Encoding.ASCII.GetBytes(ts);
IPEndPoint ep =
new
IPEndPoint(broadcast, UDPListenerPort);
s.SendTo(sendbuf, ep);
}
catch
(Exception e)
{}
UdpClient listener;
int
UDPListenerPort = 8082;
IPEndPoint groupEP =
new
IPEndPoint(IPAddress.Any, UDPListenerPort);
try
{
while
(
true
)
{
byte
[] bytes = listener.Receive(
ref
groupEP);
string
RecIP = groupEP.ToString()
.Substring(0, groupEP.ToString().IndexOf(
":"
));
//收到发送UPD端的IP
string
RecStr = Encoding.ASCII.GetString(bytes, 0, bytes.Length);
//收到的UPD字符串
}
}
catch
{}