摘要: 众所周知,UDP 就是用户数据报协议,在互联网参考模型的第四层——传输层。与TCP协议同层,都是提供信息的传输服务,但与TCP最大区别就是,它是一种无连接不可靠的信息传输。什么是无连接不可靠?直白点讲就是,发送数据的时候,直接把UDP包往网络一扔就完事了,接不接受收到发送的就不理了;接受数据的时候,有发给本地的UDP包就照单全收,收完再看是谁发的。相比TCP,少了握手建立连接,维护连接,连接释放等一系列过程,因此具有很小的资源消耗和处理速度快的优点。好了说了一堆废话,开始讲怎么利用C#中Socket进行UDP通信。TCP、UDP应用程序可以通过TCPClient、TCPListener 和 . 阅读全文
posted @ 2012-04-06 23:16 garyChong 阅读(1714) 评论(0) 推荐(1) 编辑
摘要: 1. int: 可以通过 | 和 << 的方法组合 int i = (int)(date[0]<<24|date[1]<<16|date[2]<<8|date[3]);2.float : float i = 123.444F; byte[] bts = BitConverter.GetBytes(i); //将float转换成字节数组 float j = BitConverter.ToSingle(bts,0); //从字节数组转换成float或int ssr =111;byte[] date = System.Text.Encoding.ASC 阅读全文
posted @ 2012-03-27 16:14 garyChong 阅读(580) 评论(0) 推荐(0) 编辑
摘要: c#数据类型转换,BYTE,float,double,char类型间的转换方法C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之间的转换、字符串和字符数组/字节数组之间的转换、各种数值类型和字节数组之间的转换、十六进制数输出以及日期型数据的一些转换处理,在这里与大家分享――1. 装箱、拆箱还是别名 许多 C#.NET 的书上都有介绍 int -> Int32 是一个装箱的过程,反之则是拆箱的过程。许多其它变量类型也是如此,如:short & 阅读全文
posted @ 2012-03-17 10:18 garyChong 阅读(2986) 评论(0) 推荐(0) 编辑
摘要: byte[] bt = new byte[1];bt[0] = 25;BitArray ba = new BitArray(bt);for (int i = 0; i < ba.Count; i++){textBox1.Text += Convert.ToInt16(ba[i]) + " ";}结果:1 0 0 1 1 0 0 0 阅读全文
posted @ 2012-03-16 23:32 garyChong 阅读(632) 评论(0) 推荐(0) 编辑
摘要: UdpClient在监听的时候,不管同步还是异步的,调用Close()方法或者调用线程的Abort()方法,会抛出一个异常或者出现一个正在终止线程的小窗体,我理解是UdpClient正在等待接收,线程阻塞了,所以不能强制关闭Udp连接,这个问题我在网上找了好久都没有找到好的解决方法,当时为了不让弹出那个正在终止线程的小框框,我用System.Environment.Exit(0)方法勉强的实现了,最近我自己想出了一个解决的方法,因为Udp连接正在等待接收呢,只要让Udp连接接收到数据,这时就可以正常的Close()了,这样关闭Udp连接的时候不会出现任何异常,下面是我的代码class Prog 阅读全文
posted @ 2012-02-29 17:49 garyChong 阅读(5062) 评论(0) 推荐(1) 编辑
摘要: Server:using System;using System.Net;using System.Net.Sockets;public class UdpServer{static Socket serverSock;static AsyncCallback receiveCallback;static byte[] buff;static EndPoint senderIP ;public static void Main(){buff = new byte[1024];senderIP = new IPEndPoint(IPAddress.Any, 0);receiveCallback 阅读全文
posted @ 2012-02-29 17:47 garyChong 阅读(1456) 评论(0) 推荐(0) 编辑
摘要: 实现Form的渐隐效果主要是利用了Form的Opacity属性和Timer控件。Opacity主要是指窗体的不透明性,其值在100%~0%,设置时可以为double型的值,为0.0时,Form完全透明,为1.0时,Form完全显示。Timer控件主要是用来计时的,有Interval、Enabled属性,Interval用来设置两次计时之间的间隔,Enabled设为true时计时器可用。Timer用一个Tick事件,可以在其中添加代码,用来描述伴随着计时所应做的动作,具体代码如下: this.Opacity=0.0//现在Form_Load中将Opacity设为0.0,即完全透明2 privat 阅读全文
posted @ 2012-02-29 12:15 garyChong 阅读(531) 评论(0) 推荐(0) 编辑
摘要: 这些技巧不好找,我归类总结了一下,对大家访问使用也方便,好了,列表如下:1.怎样定制VC#DataGrid列标题? DataGridTableStyledgts=newDataGridTableStyle(); dgts.MappingName="myTable";//myTable为要载入数据的DataTable DataGridTextBoxColumndgcs=newDataGridTextBoxColumn(); dgcs.MappingName="title_id"; dgcs.HeaderText="标题ID"; dgts 阅读全文
posted @ 2012-02-29 12:11 garyChong 阅读(475) 评论(2) 推荐(1) 编辑
摘要: 总结以下三种方法,实现c#每隔一段时间执行代码:方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间;方法二:使用System.Timers.Timer类;方法三:使用System.Threading.Timer;?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667using System;using System.Collections;using System.Thread 阅读全文
posted @ 2012-02-28 10:59 garyChong 阅读(550) 评论(0) 推荐(1) 编辑
摘要: /// <summary> /// 键盘事件:设置文本框能输入数字键与'.' /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void txtTest_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar != 8 && !Char.IsDigit(e.KeyCh 阅读全文
posted @ 2012-02-23 12:21 garyChong 阅读(490) 评论(0) 推荐(0) 编辑