C#下的,基于udp的点对点文件传输 一个比较简单的东西,但是没有学过C#所以还希望哪位帮忙一下。只需要客户端向服务器端发送文件就可以了。(有点急)哪位有源码请发到我邮箱:[email protected]谢谢~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 服务端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 ); } } }客户端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]; //对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制 //server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100); 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 (); } } 发送 UdpClient udp = new UdpClient(); udp.Send(Encoding.Default.GetBytes("test data"), strData.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 40000));接收 UdpClient server = new UdpClient(40000); System.Net.IPEndPoint ipFrom = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 0); byte[] byteResult = server.Receive(ref ipFrom); MessageBox.Show(Encoding.Default.GetString(byteResult) + ipFrom.Address.ToString()); 脚本,加上form标签就不起作用了,为什么 请教一个泛型的问题 一个日期的小问题 怎么给一个结构付空值? 如何在DataSet中应用SQL语句 C#---->vb.net语句转换 WPF,XAML应用程序与Silverlight FileInfo如何关闭对文件的访问? 怎么在datagrid的单元格中写单击事件? wcf通讯报错 关于中文名字到英文名字的算法 oreacle 排序问题
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 );
}
} }客户端
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];
//对于不存在的IP地址,加入此行代码后,可以在指定时间内解除阻塞模式限制
//server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 100);
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 ();
} }
UdpClient udp = new UdpClient(); udp.Send(Encoding.Default.GetBytes("test data"), strData.Length, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 40000));接收 UdpClient server = new UdpClient(40000); System.Net.IPEndPoint ipFrom = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 0); byte[] byteResult = server.Receive(ref ipFrom); MessageBox.Show(Encoding.Default.GetString(byteResult) + ipFrom.Address.ToString());