UDP信息接收问题

zhoujianzhou 2009-08-19 01:37:51
利用UDP协议写的接收用户即时通信程序,在接收到其他用户发送来的信息时如何实现新建一个窗口并将其信息放在新建窗口里?最好给个例子!
新手不会跨线程创建一个新窗口!哪位高人最好能给个例子!
...全文
88 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujianzhou 2009-08-19
  • 打赏
  • 举报
回复
ding!
zhoujianzhou 2009-08-19
  • 打赏
  • 举报
回复
能给出一段代码实现以下功能的同样有分:
双击下拉列表的代码如下:
public void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
……
}
某个类中的代码:
myForm.listBox1.MouseDoubleClick+=new MouseEventHandler(myForm.listBox1_MouseDoubleClick);
myForm.listBox1已经绑定双击事件,我想在这个类中通过委托手动调用listBox1_MouseDoubleClick方法。
zhoujianzhou 2009-08-19
  • 打赏
  • 举报
回复
1楼所说的只是更新窗体内的列表,这个只是跨线程访问的吧!而非我要求的创建一个新的聊天窗口。。
chaozi_249 2009-08-19
  • 打赏
  • 举报
回复
udp经常会丢失数据,不太稳定啊。
flyerwing 2009-08-19
  • 打赏
  • 举报
回复
学习!
fengjian_428 2009-08-19
  • 打赏
  • 举报
回复
接收UDP 通过线程更新listview :lvMessage
创建窗口原理一样

delegate void AddList(string s);
void Recevice()
{
string hostname = System.Net.Dns.GetHostName();
System.Net.IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(hostname);
string ip = ipEntry.AddressList[0].ToString();

IPEndPoint localEP = new IPEndPoint(IPAddress.Parse(ip), 9060);
ArrayList list = new ArrayList(10);
server = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);

server.Bind(localEP);
EndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);

int recv;
byte[] data;

while (true)
{
data = new byte[1024];
recv = 0;
recv = server.ReceiveFrom(data, ref remoteEP);

String message = Encoding.Default.GetString(data, 0, recv);
String Data = Encoding.Default.GetString(data);

ChangeUI(Data);
}
}
void ChangeUI(string s)
{
if (lvMessage.InvokeRequired)
{
Invoke(new AddList(ChangeUI), s);
}
else
{
ListViewItem lvi = new ListViewItem();
lvi.ImageIndex = 1;
lvi.Tag = mi.MnID + mi.Time;
lvi.SubItems.Clear();
lvi.SubItems[0].Text = s;
lvMessage.Items.Insert(0, lvi);
}
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧