使用C#进行点对点通讯和文件传输第1页使用C#进行点对点通讯和文件传输程序分三部分,包括发送部分、接受部分和一个两者共享的通讯基类,这个基类才是俺心血的结晶:)一、通讯基类usingSystem;.Sockets;;;;;namespaceBaseClass{///传送信息的格式为给定长度的命令部分+给定长度的命令注释部分+可变长度的长度信息+munClass{munClass(){//TODO:在此处添加构造函数逻辑}///命令部分的长度privatestaticreadonlyintCMDLEN=50;///命令注释部分的长度privatestaticreadonlyintDESCLEN=100;///可变长度的长度信息部分所占的字节数privatestaticreadonlyintDYNAMICLENGTHLEN=10;///每次处理可变信息部分的长度privatestaticreadonlyintDEALLEN=1024;////应答的最大长度privatestaticreadonlyintRESPONLEN=20;///用于填充命令或注释不足长度部分的字符privatestaticreadonlycharFILLCHAR=''^'';///成功发送一部分数据后的回调方法(也可以认为是触发的事件,但严格来说还不是)publicdelegatevoidOnSend(intiTotal,intiSending);///根据给定的服务器和端口号建立连接///服务器名///端口号publicstaticSocketConnectToServer(stringstrHost,intiPort){try{IPAddressipAddress=(strHost).AddressList[0];IPEndPointipPoint=newIPEndPoint(ipAddress,iPort);Sockets=newSocket(,,);(ipPoint);returns;}catch(Exceptione){throw(newException("建立到服务器的连接出错"+));}}///将文本写到Socket中///要发送信息的Socket///要发送的信息///是否成功publicstaticboolWriteTextToSocket(Sockets,stringstrInfo){byte[]buf=(strInfo);try{(buf,0,,);returntrue;}catch(Exceptionerr){("发送文本失败!"+);returnfalse;}}///将命令文本写到Socket中///要发送命令文本的Socket///要发送的命令文本//mandToSocket(Sockets,stringstrCmd){if(strCmd=="")strCmd="NOP";strCmd=(CMDLEN,FILLCHAR);returnWriteTextToSocket(s,strCmd);}//////将命令注释写到Socket中//////要发送命令注释的Socket///要发送的命令注释///mandDescToSocket(Sockets,stringstrDesc){if(strDesc=="")strDesc="0";strDesc=(DESCLEN,FILLCHAR);returnWriteTextToSocket(s,strDesc);}///发送可变信息的字节数///要发送字节数的Socket///字节数///是否成功publicstaticboolWriteDynamicLenToSocket(Sockets,intiLen){stringstrLen=().PadRight(DYNAMICLENGTHLEN,FILLCHAR);returnWriteTextToSocket(s,strLen);}///将缓存的指定部分发送到Socket///要发送缓存的Socket///要发送的缓存///要发送缓存的起始位置///要发送缓存的字节数///每次发送的字节说///每次发送成功后的回调函数///是否发送成功
使用C#进行点对点通讯和文件传输 来自淘豆网m.daumloan.com转载请标明出处.