02 2012 档案
摘要:UdpClient在监听的时候,不管同步还是异步的,调用Close()方法或者调用线程的Abort()方法,会抛出一个异常或者出现一个正在终止线程的小窗体,我理解是UdpClient正在等待接收,线程阻塞了,所以不能强制关闭Udp连接,这个问题我在网上找了好久都没有找到好的解决方法,当时为了不让弹出那个正在终止线程的小框框,我用System.Environment.Exit(0)方法勉强的实现了,最近我自己想出了一个解决的方法,因为Udp连接正在等待接收呢,只要让Udp连接接收到数据,这时就可以正常的Close()了,这样关闭Udp连接的时候不会出现任何异常,下面是我的代码class Prog
阅读全文
摘要: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
阅读全文
摘要:实现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
阅读全文
摘要:这些技巧不好找,我归类总结了一下,对大家访问使用也方便,好了,列表如下:1.怎样定制VC#DataGrid列标题? DataGridTableStyledgts=newDataGridTableStyle(); dgts.MappingName="myTable";//myTable为要载入数据的DataTable DataGridTextBoxColumndgcs=newDataGridTextBoxColumn(); dgcs.MappingName="title_id"; dgcs.HeaderText="标题ID"; dgts
阅读全文
摘要:总结以下三种方法,实现c#每隔一段时间执行代码:方法一:调用线程执行方法,在方法中实现死循环,每个循环Sleep设定时间;方法二:使用System.Timers.Timer类;方法三:使用System.Threading.Timer;?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667using System;using System.Collections;using System.Thread
阅读全文
摘要:/// <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
阅读全文
摘要:用用户控件是我们常用的,刚搞了这方面,也记录一下。 这里做了一个限定输入与提示的文本框: 1.第一步:新建一个控件库项目或者直接在建好的项目右键添加:用户控件 2.第二步:从工具箱里面拖动一个文本框,然后写代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;namespace Control.
阅读全文
摘要:因为数据包是一个字节数组,也是报文,而校验和是其中之一,校验和是在数据处理和数据通信领域中,用于校验目的的一组数据项的和,所以算法和很重要:数据包格式:**版本号 (2byte)**Ip地址(4byte).......**校验和 (2byte)...方法如下:/// <summary> /// 方法:16位无字符整数转字节数组 /// </summary> /// <param name="i">代入的16为参数</param> /// <returns></returns> public static
阅读全文
摘要:UDP的简单应用: 由于UDP是一种无连接的协议。因此,为了使服务器应用能够发送和接收UDP数据包,则需要做两件事情: 创建一个Socket对象; 将创建的套接字对象与本地IPEndPoint进行绑定。 完成上述步骤后,那么创建的套接字就能够在IPEndPoint上接收流入的UDP数据包,或者将流出的UDP数据包发送到网络中任意其他设备商。使用UDP进行通信时,不需要TCP连接。因为异地的主机之间没有建立连接,所以UDP不能使用标准的Send()和Receive()t套接字方法,而是使用两个其他的方法:SendTo()和ReceiveFrom()。 SendTo()方法指定要发送的数据,和目标
阅读全文
摘要:1.问题:在Socket通信中,我们经常要多客户端共用一个端口,但这往往会报错,因为正常来说一个端口只能绑定一次,但释放的时候比较麻烦,所以还是要是实现端口共用的话,就不用执行一个关一个再开一个。 2.实现端口复用: 正常绑定: //定义网络地址,连接类型与网络协议并绑定本地IP与端口 socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); ipPoint = new IPEndPoint(IPAddress.Parse(ipAd...
阅读全文
摘要:1 //把其它数字类型:int(32)/long(64)/ushort(16)存入byte[],根据后面的位数偏移,后一位 + 8 2 int a = 0x911245; 3 byte[] bys = new byte[4]; 4 bys[0] = (byte)(a); 5 bys[1] = (byte)(a >> 8); 6 bys[2] = (byte)(a >> 16); 7 bys[3] = (byte)(a >> 24); 8 ...
阅读全文

浙公网安备 33010602011771号