zoukankan      html  css  js  c++  java
  • 初学c# -- 学习笔记 小结

    学了到了好些东西, 做了一些练习。

    一、C# winform Socket

    1、程序主要部分只是用了 Panel、Picturebox、Label、RicheditBox四个组件,滚动条、编辑框什么的都自定义了,应该比较容易看清楚。
    2、服务端设定地址为192.168.0.103,端口设定为5188,客户端指向服务端也是这个地址,根据需要自行修改。
    服务端:
    //监听端口
    private int port = 51888;
    private TcpListener myListener;
    ArrayList MessList = new ArrayList();
    int MessCount = 0;
    ...
    ...
    IPAddress[] addrIP = Dns.GetHostAddresses("192.168.0.103"); //ip地址
    localAddress = addrIP[0];
    客户端:
    //建立网络通讯
    try
    {
    client = new TcpClient("192.168.0.103", 51888); //定义服务器端ip地址和端口,与服务器端定义要一致
    TcpInfo.AppendText("本机EndPoint:" client.Client.LocalEndPoint); //本机的ip地址和端口号
    TcpInfo.AppendText("与服务器建立连接成功");
    linkFlag = true;
    }
    catch
    {
    TcpInfo.AppendText("与服务器连接失败");
    return;
    }
    3、程序运行时必须首先运行“服务端”的ChatServer.exe,点击“开始监听”后,再运行“客户端”的可执行文件,用户名随便起一个,密码随便填。服务端每个登录用户开1个线程,客户端开1个线程进行数据交互。
    4、数据传输定义:
    string[] sArray = getMess.Split(new char[6] { '[', ']', '$', '$', '$', '$' });
    //sArray[1] 发送信息用户的ip
    //sArray[3] 发送消息的版块
    //sArray[4] 发送消息的内容
    //sArray[5] 用户名
    //sArray[6] 时间
    服务端据此进行消息派发,客户端根据返回的消息分类显示。
    5、由于使用绘图功能,会产生屏幕的闪烁,所以用生成位图的方式处理,达到减小闪烁。可能会产生信息更新较慢或不连贯,因为在最右侧将全部数据动作写了一遍。同时,由于在线程上不能对原组件进行添加等操作,所以按照右侧内容变化来更新数据信息显示:
     private void TcpInfo_TextChanged(object sender, EventArgs e)
     {.........}
    绘图处理:
    ......
    Bitmap localBitmap = new Bitmap(conter_panel.Width, conter_panel.Height);
     Graphics bitmapGraphics = Graphics.FromImage(localBitmap);
    bitmapGraphics.Clear(BackColor);
    bitmapGraphics.SmoothingMode = SmoothingMode.AntiAlias;
    Draw(conter_panel.ClientRectangle, bitmapGraphics, 18, true, 0, Color.FromArgb(90, 143, 0), Color.FromArgb(90, 143, 0));
    conter_panel.BackgroundImage = localBitmap;
    conter_panel.Controls.Add(rc);
    ......
    6、程序为了学习方便未使用数据库,所有数据交互都放在内存中进行。

    二、Winform网盘(全格式音视频在线预览)

    实际上就一简单的三层,客户端通过服务端连接数据库,服务端读写数据库发送到客户端。

    1、程序功能:
    使用VLC的媒体库(DLL),程序服务端支持大多数音频、视频等格式的预览,打开文件的方式为本地文件夹,将video、audio等文件夹和exe文件放在一起;
    客户端支持大多数格式的音频、视频等格式的在线预览、下载,并可上传各类型文件到服务器。
    视频文件:
    .asf;.avi;.divx;.dv;.flv;.gxf;.m1v;.m2v;.m2ts;.m4v;.mkv;.mov;.mp4;.mpeg;.mpeg1;.mpeg2;.mpeg4;.mpg;
    .mts;.mxf;.ts;.vob;.wmv;.m4a;.m4p;.mod;Webm;raw;rm;rmvb;
    音频文件:
    .mp1;.mp2;.mp3;.wav;.a52;.aac;.ac3;.dts;
    .flac;.ogg;.ogm;.mka;
    为避免偏差,强制了文件名,用MP4和MP3播放,让VLC去自己识别了,例如1234.avi.mp4,123.wav.mp3。
    图像文件:
    .bmp;.bid;.jpg;.jpeg;.jfif;.gif;.tif;.tiff;.png;.ico;
    2、数据库:
    使用sql2008,将数据库文件附加上去就可以了,批量文件处理,写了2个标量值函数和存储过程,通过程序传递参数调用存储过程来进行记录批量处理,级联关系看数据库关系图。
    3、配置:
    除sql2008外,部署IIS,将目录指向包含服务端EXE文件和文件夹的路径就可以了,设置匿名访问就行了,其他功能基本不用。
    在程序里需自行设定你的SQL密码,用户为sa;IIS、客户端、服务端的ip都设为了192.168.0.103端口518888,根据需要自行修改,修改时注意,可能多个文件都要修改ip。
    4、其他说明:
    服务端是64位程序,也可改到32位,需将DLL文件替换成32位的,项目属性选择“首选32位”;客户端是32位的,也可以选择64位,替换成64位的DLL文件后,项目属性去掉“首选32位”。播放进度条和播放控制没做,程序里面有注释,或百度VLC相关资料。VLC为32位、64位2.24版本的,目前是最新版,关注VLC官网更新。
    5、练习的内容:
    cpu、内存监控;本地媒体文件播放;网络流媒体播放;winform文件远程下载;winform Socket文件上传等。
    取得服务端文件用了2种方式,http和Socket,上传文件大家就不要参考百度的例子了,什么webclient、http类、winform aspx什么的,绝大多数用不成,能用的还老出问题,就别费劲了,只参考Socket文件上传文章就可以了,别走弯路了。
    客户端程序上传每次20k,觉得慢自己改。有个问题,上传文件超过500M服务端会挂掉,因为c#的FromBase64String泄漏了,可以采用byte[]合并的方式分段,来解决该问题,请自行处理解决,其他转换方式就不要试了,不支持图像和音视频的格式。

     用户:16000至16010,密码1234546,先用服务端添加一个文件,要不客户端打不开。

     播放这块不全懒得做了,客户端全播放的放http://www.haolizi.net/example/view_10278.html

    这里了

    下载:https://pan.baidu.com/s/1slxZwVN

    程序里面还有错误,不修改了,只是一些练习。

  • 相关阅读:
    值类型和引用类型
    0513二分查找练习
    0512随机4位验证码
    0511java 随机6个不同的彩票数
    随机数的产生机制
    0510Java 练习
    0509java练习题
    java循环作业
    字符集的由来及发展
    hdu2577_键入字母
  • 原文地址:https://www.cnblogs.com/qiaoke/p/6358050.html
Copyright © 2011-2022 走看看