社区
C#
帖子详情
求一个Udp例子
luobing261314
2008-12-05 11:21:32
由于需求要做一个简单网络聊天系统
我对于这方面没有接触过
听所要Udp协议才可以做到
所以请各位朋友帮帮忙.
...全文
154
7
打赏
收藏
求一个Udp例子
由于需求要做一个简单网络聊天系统 我对于这方面没有接触过 听所要Udp协议才可以做到 所以请各位朋友帮帮忙.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackljane
2008-12-05
打赏
举报
回复
上面是接收部份
这里是发送部份
这里的端口都是 8888 ,从本机192.168.0.1 发给自己. 监听需要在后运行一个线程 .
private UdpClient uc;
uc = new UdpClient(8888);
IPEndPoint ieps = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 8888);
string temp = tbMsg.Text;
byte[] b = Encoding.UTF8.GetBytes(temp); //对发送的数据的进行UTF8格式的编码
uc.Send(b, b.Length, ieps);
jackljane
2008-12-05
打赏
举报
回复
上面是接收部份
这里是发送部份
这里的端口都是 8888 ,从本机192.168.0.1 发给自己. 监听需要在后运行一个线程 .
private UdpClient uc;
uc = new UdpClient(8888);
IPEndPoint ieps = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 8888);
string temp = tbMsg.Text;
byte[] b = Encoding.UTF8.GetBytes(temp); //对发送的数据的进行UTF8格式的编码
uc.Send(b, b.Length, ieps);
jackljane
2008-12-05
打赏
举报
回复
udp 是发完就不管了。不管有没有收到. 在某个端口监听就行了。
private IPEndPoint iep;
iep = new IPEndPoint(IPAddress.Parse("192.168.0.1"), 8888);
private void listen()
{
while (true)
{
string text = Encoding.UTF8.GetString(uc.Receive(ref iep)); //对发送的数据的进行UTF8格式的编码
DataRow dr = dt.Rows.Find(iep.Address);
if (dr != null)
{
Invoke(new SHowText(show), new object[] {dr["NickName"].ToString(),text });
}
else
{
Invoke(new SHowText(show), new object[] { iep.Address.ToString(), text });
}
}
}
deserveit
2008-12-05
打赏
举报
回复
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 ();
}
}
}
deserveit
2008-12-05
打赏
举报
回复
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 );
}
}
}
}
dayizhixiaotutu
2008-12-05
打赏
举报
回复
网上很多的
tianshangfei
2008-12-05
打赏
举报
回复
oo
欧姆龙以太网通讯TCP/
UDP
例子
及欧姆龙PLC程序
例子
说明
欧姆龙TCP/
UDP
网络通讯
例子
,通讯的每个节点都有详细说明,还有欧姆龙PLC程序
例子
,以及中文版通讯功能块。
Android
UDP
接收发送demo
Android
UDP
send receive demo 16进制 接收 发送
C#的Socket实现
UDP
协议通信
C#的Socket实现
UDP
协议通信 CSharp
udp
网络通信
例子
源代码(单播、组播、广播)
udp
网络通信
例子
源代码(单播、组播、广播)
Qt局域网聊天工具
在上2次文章Qt学习之路_5(Qt TCP的初步使用) Qt学习之路_4(Qt
UDP
的初步使用) 中已经初步介绍了群聊功能和文件传输功能,这一节中主要在这个基础上加入
一个
私聊功能。 参考文献依旧是:《Qt及Qt Quick开发实战精解》一书中的第5个
例子
以及http://www.yafeilinux.com/ 网站上的源码。另外这次的私聊功能也是参考网友http://www.qtcn.org/bbs/read-htm-tid-32609.html的,他的程序有些bug,其中最严重的bug是当私聊第二次聊天的时候对方会接收不到信息。这次主要是将这个bug和其它一些小bug修补了,但是仍然有
一个
漏洞就是:当第二次私聊时,后面那个的发送方收到信息的时候有可能会多
一个
窗口弹出来。目前还找不到其原因。猜想是:在第一次聊天接收时关闭聊天窗口后,其内存没有释放。但是当窗口关闭时我们觉得其内存释放应该在Qt内部自己实现。
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章