注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

午夜阳光

 
 
 

日志

 
 

C# Udp Socket例子  

2012-09-19 13:32:20|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 服务器端

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;

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];
 //对于不存在的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 (); 
}
 }
}

  评论这张
 
阅读(538)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017