当前位置: 首页 > news >正文

网站建设课结课感受商业空间设计风格

网站建设课结课感受,商业空间设计风格,杭州建设信用平台,徐城乡建设局网站项目介绍#xff1a;本实例主要是接收安检闸机的数据解析并显示到界面上#xff0c;只做功能实现#xff0c;不做界面美化硬件#xff1a;闸机一个、网线一根、电脑主机开发环境#xff1a;vs2017 系统#xff1a;win10涵盖知识点#xff1a;tcp通讯、文件写入、多线程本实例主要是接收安检闸机的数据解析并显示到界面上只做功能实现不做界面美化硬件闸机一个、网线一根、电脑主机开发环境vs2017 系统win10涵盖知识点tcp通讯、文件写入、多线程委托、类型转换等软件操作流程点击开始监听按钮8999要是未被占用则开启监听然后人刷身份证通过安检闸机就可以接收到数据数据格式截图安检闸机图片知识点介绍 1. socket.Listen(10); 官方给出的解释挂起连接队列的最大长度。 连接队列即连接池也就是要保证挂起的连接池中至少要有10个连接                我解释一下为什么要提前准备10个挂起的连接原因就是每当一个新用户接入进来时就需要立即创建一个socket创建也需要时间和消耗系统资源这样就会影响高并发的性能                用不用先放那用的时候直接取即2. Socket clientSocket socket.Accept();AcceptSocket是同步的你可以用异步通讯的BeginAcceptSocket或者用多线程。没有请求到达就会“卡”住术语叫程序阻塞socket同步通讯就是这个步骤执行到AcceptSocket就会阻塞等待请求直到有请求到达时才执行后面的语句并且处理这个请求3. while (true) 因为组要一直监听所以得死循环4. 开启一个后来线程不然主界面会假死 new Thread(delegate ()            {主体代码;})            { IsBackground true }.Start();5.从其它线程访问主线程控件需要委托不然界面不会有数据的 this.Invoke((EventHandler)delegate                        {                            richTextBox1.Text “”                        });完整代码如下using System; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Windows.Forms; using System.IO; using System.Threading; using System.Text; using System.Drawing;namespace TcpRecive {public partial class mainForm : Form{public mainForm(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){textBox1.Text 8999; }public void tcpRecive(int port){if (PortIsUse(port)){label1.Text 端口 port.ToString() 被占用; return;}else label1.Text 端口 port.ToString() 没有占用,监听已开启;new Thread(delegate (){int recv;//定义接收数据长度变量//IPAddress ip IPAddress.Parse(192.168.1.119);//接收端所在IP 192.168.1.119换成127.0.0.1不可以为什么IPEndPoint ipEnd new IPEndPoint(IPAddress.Any, port);//接收端所监听的接口,ip也可以用IPAddress.AnySocket socket new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//初始化一个Socket对象socket.Bind(ipEnd);//绑定套接字到一个IP地址和一个端口上(bind())//官方给出的解释挂起连接队列的最大长度。//连接队列即连接池也就是要保证挂起的连接池中至少要有10个连接//我解释一下为什么要提前准备10个挂起的连接原因就是每当一个新用户接入进来时就需要立即创建一个socket创建也需要时间和消耗系统资源这样就会影响高并发的性能//用不用先放那用的时候直接取即可socket.Listen(10);while (true){try{byte[] data new byte[70000];//对data清零Socket clientSocket socket.Accept(); //一旦接受连接创建一个客户端recv clientSocket.Receive(data);// 或者clientSocket.Receive(data, data.Length, SocketFlags.None);获取收到的数据的长度if (recv 0) //如果收到的数据长度小于0则退出break;//string stringData Encoding.ASCII.GetString(data);string stringData Encoding.UTF8.GetString(data);dataDecode(data);fileWrite(DateTime.Now.ToString(yy-MM-dd hh:mm:ss) \n stringData);}catch(Exception ex){MessageBox.Show(ex.ToString());}}}){ IsBackground true }.Start();}/// summary/// 字节数组转16进制字符串/// /summary/// param namebytes/param/// returns/returnspublic static string byteToHexStr(byte[] bytes){string returnStr ;if (bytes ! null){for (int i 0; i bytes.Length; i){returnStr bytes[i].ToString(X2);}}return returnStr;}public void dataDecode(byte[] data){int dataL 0, isPass 0, nameL 0, ethnicL 0, sexL 0, birthdayL 0, adressL 0, cardNoL 0, startTimeL 0, endTimeL 0, cardImageL 0, captureImageL 0;string item , name , ethnic , sex , birthday , adress , cardNo , startTime , endTime ;dataL BitConverter.ToInt32(data, 0);//数据包大小低字节在前面高字节在后面isPass BitConverter.ToInt32(data, 4);//人证核验结果nameL BitConverter.ToInt32(data, 8);//姓名长度name Encoding.UTF8.GetString(data, 12, nameL);//姓名ethnicL BitConverter.ToInt32(data, 12 nameL);//民族长度ethnic Encoding.UTF8.GetString(data, 16 nameL, ethnicL);//民族sexL BitConverter.ToInt32(data, 16 nameL ethnicL);//性别长度sex Encoding.UTF8.GetString(data, 20 nameL ethnicL,sexL);//性别birthdayL BitConverter.ToInt32(data, 20 nameL ethnicL sexL);birthday Encoding.UTF8.GetString(data, 24 nameL ethnicLsexL,birthdayL);//出生日期adressL BitConverter.ToInt32(data, 24 nameL ethnicL sexL birthdayL);adress Encoding.UTF8.GetString(data, 28 nameL ethnicL sexLbirthdayL, adressL);//地址cardNoL BitConverter.ToInt32(data, 28 nameL ethnicL sexL birthdayL adressL);cardNo Encoding.UTF8.GetString(data, 32 nameL ethnicL sexL birthdayLadressL, cardNoL);//身份证号码startTimeL BitConverter.ToInt32(data, 32 nameL ethnicL sexL birthdayL adressL cardNoL);startTime Encoding.UTF8.GetString(data, 36 nameL ethnicL sexL birthdayL adressL cardNoL, startTimeL);//身份证起始时间endTimeL BitConverter.ToInt32(data, 36 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL);endTime Encoding.UTF8.GetString(data, 40 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL, endTimeL);//身份证终止时间if (isPass 1)item 人证核验:成功 \n姓名 name \n民族 ethnic \n性别 sex \n出生日期 birthday \n地址 adress \n身份证号码 cardNo \n身份证起始时间 startTime \n身份证终止时间 endTime;elseitem 人证核验:失败 \n姓名 name \n民族 ethnic \n性别 sex \n出生日期 birthday \n地址 adress \n身份证号码 cardNo \n身份证起始时间 startTime \n身份证终止时间 endTime;cardImageL BitConverter.ToInt32(data, 40 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL endTimeL);MemoryStream ms1 new MemoryStream(data, 44 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL endTimeL, cardImageL);captureImageL BitConverter.ToInt32(data, 44 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL endTimeL cardImageL);MemoryStream ms2 new MemoryStream(data, 48 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL endTimeLcardImageL, captureImageL);//ms.Write(data, 44 nameL ethnicL sexL birthdayL adressL cardNoL startTimeL endTimeL, cardImageL);Image img1 Image.FromStream(ms1);Image img2 Image.FromStream(ms2);this.Invoke((EventHandler)delegate{richTextBox1.Text item;pictureBox1.Image img1; //更新在窗体控件上 pictureBox2.Image img2;});ms1.Flush(); ms2.Flush();ms1.Close(); ms2.Close();ms1.Dispose(); ms2.Dispose();}public void fileWrite(string str){if (!File.Exists(info.txt))File.Create(info.txt).Close();//创建文件并关闭StreamWriter sw new StreamWriter(info.txt,true);//向文件追加数据sw.WriteLine(str);sw.Close();}//通过 IPGlobalProperties来获取本机的网络连接的信息并通过GetActiveTcpListeners找到已用端口进而可以知道所需的端口是否已被占用public static bool PortIsUse(int port){bool isUse false;IPGlobalProperties ipProperties IPGlobalProperties.GetIPGlobalProperties();IPEndPoint[] ipEndPoints ipProperties.GetActiveTcpListeners();//找到已用端口foreach (IPEndPoint endPoint in ipEndPoints){if (endPoint.Port port)//判断是否存在{isUse true;break;}}return isUse;}private void button1_Click(object sender, EventArgs e){tcpRecive(int.Parse(textBox1.Text));}} }运行结果
http://www.yutouwan.com/news/335229/

相关文章:

  • 珠海网站建设王道下拉惠网页网站设计培训
  • 建立网站需要花多少费用怎样加入58同城平台服务行业
  • 汕头网站关键排名做网站用python还是php
  • 网站引导页在线做网站需要什么
  • 专业网站建设公司郑州一建是国企还是私企
  • 网站风格特点全部视频支持代表手机浏览器
  • 设计网站考虑哪些因素游戏推广公司怎么接游戏的
  • 网站建设优化服务熊掌号如何维护wordpress
  • 科技企业网站建设模板在线seo外链工具
  • 怎么新建网站西安有哪些网站
  • 北京网站优化方法妖精直播
  • 深圳数码网站建设贵州省文化旅游网站建设的必要性
  • 建设工程东莞网站建设技术支持网站建设公司的优势
  • 云主机怎么安装网站静态网站没有数据库吗
  • 深圳福田网站制作山西太原网建设企业
  • 如何优化推广中的关键词引擎seo优
  • 广西建设厅网站资质查询怎么自己做淘客网站
  • wordpress网站在哪网站建设经营范围
  • 中国建设银行的网站用户名是什么意思wordpress 3.8 侧边栏 仪表盘
  • 百度广告怎么推广网站优化排名哪家性价比高
  • 个人网站备案备注范文企业vi设计的基本要素
  • 网站构建的基本流程怎样做网店生意
  • 网站开发招商计划书免费一级域名申请
  • 网站的标题与关键词免费seo排名工具
  • 北京 外贸网站网上注册公司app
  • 网站建设最重要的环节河北廊坊网站建设
  • 网站实名认证中心山东省建设工程网站
  • 张家界城乡建设网站百度ai营销中国行
  • 有哪些网站是中国风网站淘宝支持做微交易网站吗
  • 集团网站建设费用论坛网站 备案