社区
C#
帖子详情
求一个Udp例子
luobing261314
2008-12-05 11:21:32
由于需求要做一个简单网络聊天系统
我对于这方面没有接触过
听所要Udp协议才可以做到
所以请各位朋友帮帮忙.
...全文
157
7
打赏
收藏
求一个Udp例子
由于需求要做一个简单网络聊天系统 我对于这方面没有接触过 听所要Udp协议才可以做到 所以请各位朋友帮帮忙.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
C#的Socket实现
UDP
协议通信
C#的Socket实现
UDP
协议通信 CSharp
Socket编程
例子
Socket编程
例子
QT经典教程_详细一步一步
例子
为了使更多的Qt初学者能尽快入门Qt,也为了Qt及Qt Creator的快速普及,我们花费大量精力写出了这一系列教程。虽然教程的知识可能很浅显,虽然教程的语言可能不规范,但是它却被数十万网友所认可。我们会将这一系列教程一直写下去,它将涉及Qt的方方面面 一、Qt Creator的安装和hello world程序的编写 二、Qt Creator编写多窗口程序 三、Qt Creator登录对话框 四、Qt Creator添加菜单图标 五、Qt Creator布局管理器的使用 六、Qt Creator实现文本编辑 七、Qt Creator实现文本查找 八、Qt Creator实现状态栏显示 九、Qt Creator中鼠标键盘事件的处理实现自定义鼠标指针 十、Qt Creator中实现定时器和产生随机数 十一、Qt 2D绘图(一)绘制简单图形 十二、Qt 2D绘图(二)渐变填充 十三、Qt 2D绘图(三)绘制文字 十四、Qt 2D绘图(四)绘制路径 十五、Qt 2D绘图(五)显示图片 十六、Qt 2D绘图(六)坐标系统 十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL数据库驱动插件 二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一) 二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二) 二十五、Qt数据库(五)QSqlQueryModel 二十六、Qt数据库(六)QSqlTableModel 二十七、Qt数据库(七)QSqlRelationalTableModel 二十八、Qt数据库(八)XML(一) 二十九、Qt数据库(九)XML(二) 三十、Qt数据库(十)XML(三) 三十一、Qt 4.7.0及Qt Creator 2.0 beta版安装全程图解 三十二、第
一个
Qt Quick程序(QML程序) 三十三、体验QML演示程序 三十四、Qt Quick Designer介绍 三十五、QML组件 三十六、QML项目之Image和BorderImage 三十七、Flipable、Flickable和状态与动画 三十八、QML视图 三十九、QtDeclarative模块 四十、使用Nokia Qt SDK开发Symbian和Maemo终端软件 四十一、Qt网络(一)简介 四十二、Qt网络(二)HTTP编程 四十三、Qt网络(三)FTP(一) 四十四、Qt网络(四)FTP(二) 四十五、Qt网络(五)获取本机网络信息 四十六、Qt网络(六)
UDP
四十七、Qt网络(七)TCP(一) 四十八、Qt网络(八)TCP(二)
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内部自己实现。
Java Socket编程最简单示例
基于TCP和
UDP
的socket编程,给出了最简单的示例代码。 相关博文地址: http://blog.csdn.net/wintys/archive/2008/12/15/3525643.aspx http://blog.csdn.net/wintys/archive/2008/12/15/3525619.aspx
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章