版权声明:本文为博主原创文章,转载请附上链接。 https://blog.csdn.net/woswod/article/details/82288740
最近学习用C#写了几个程序,记录一下常用的几个操作,方便以后Copy
文件操作
FileStream fs = null;
try
{
byte[] buf;
FileStream fs = new FileStream(strSampleFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
buf = new byte[fs.Length];
fs.Read(buf, 0, buff.Length);
fs.Close(); //需要显示关闭
}
catch(Except ex)
{
Console.WriteLine(ex.Message);
if(null != fs)
fs.Close(); //需要显示关闭
}
//使用using机制,会自动马上释放托管资源,可以不必显式调用Close()
byte[] buf;
using (Stream sin = new FileStream(strSampleFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
buf = new byte[sin.Length];
sin.Read(buf, 0, buff.Length);
}
网络通信 创建线程
/// TCP监听
private static void ListenClientConnect()
{
IPAddress ip = IPAddress.Parse("0.0.0.0");
sockSrv = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sockSrv.Bind(new IPEndPoint(ip, 4444)); //绑定IP地址:端口
sockSrv.Listen(10); //设定排队连接请求数
Console.WriteLine("Waiting for a new connection......");
while (true)
{
Socket sockClt = sockSrv.Accept();
//IPEndPoint ipClt = (IPEndPoint)(sockClt.RemoteEndPoint);
Console.WriteLine("A new connection established : %s", sockClt.RemoteEndPoint.ToString());
Thread receiveThread = new Thread(EchoThread);
receiveThread.Start(sockClt);
receiveThread.Join(); //单线程模式
}
}
/// 工作线程
private static void EchoThread(object clientSocket)
{
Socket sockClt = (Socket)clientSocket;
byte[] buf = new byte[1024];
UInt32 uiCount = 0;
while (true)
{
try
{
int iLen = sockClt.Receive(buf);
if (iLen <= 0)
{
Console.WriteLine("disconnected!\n");
break;
}
Console.WriteLine(buf);
sockClt.Send(strParam);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
sockClt.Shutdown(SocketShutdown.Both);
sockClt.Close();
break;
}
}
}
编码转换
string strParam = System.Text.Encoding.ASCII.GetString(buf, 0, iLen);
Console.WriteLine("{0}\n", strParam);