UDP编程中遇到的一些问题总结

今天UDP编程,遇到了不少问题,第一次用UDP,收获挺大的。

今天犯了一个很傻的错误,就是在接收数据的时候,client.receive的时候,竟然忘了把client与端口绑定在一起,导致没有接收到数据……

还有就是接收到字节数组后,不能直接toString(),必须用Encording中的getString()方法,否则得到的字节数组会转换错误,发送的时候也要用Encording方法。

貌似ASCNII码不支持中文吧,用它来转换中文的话,会使richtextbox不能正确显示中文。我最后用的是unicode。

最后有个困扰我很久的问题就是,多线程编程中,如果调用其他线程中创建的控件,我找了很多方法,虽然网上有很多方法,也有很多代码,但是我看着这些代码,纠结着应该放到我程序的哪里,是放到主线程里,还是子线程里呢……相当纠结……我希望那些高手以后贴代码的时候麻烦告诉我们这些菜鸟应该把代码放到哪里,没办法,菜鸟一个,拿着东西都不知道怎么用……

这个问题,应该现在主线程中声明一个委托,public delegate void myDelegate(byte[] reveive);然后在子线程中的函数中,建立实例

myDelegate myEvent=new myDelegate(dispay);,dispay是关联的函数,这个函数直接放到主线程里面就行了,最后在子线程的程序中调用invoke方法,比如你要修改的是richtextbox控件,只需要执行richTextBox1.Invoke(myEvent, receive);至于receive嘛,dispay的参数而已啦………………在dispay中,就可以直接调用

richtextbox1.text=encording.unicode.getstring(receive);

这样就OK了。

对了,还有个问题,就是如何在主线程结束后子线程自动结束,需要加上这行代码:

thread.IsBackground = true;


暂时就这样吧,留作以后备查…………

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值