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

加人引流加人网站怎么做百度收录提交申请网站

加人引流加人网站怎么做,百度收录提交申请网站,建设网站建站公司,服装定制店名怎么取项目介绍#xff1a;本实例主要是接收安检金属门的数据解析并显示到界面上#xff0c;只做功能实现#xff0c;不做界面美化硬件#xff1a;金属门一个、网线一根、电脑主机#xff0c;金属门网线可以直接接到电脑主机上开发环境#xff1a;vs2017 系统#xff1a;win10… 项目介绍本实例主要是接收安检金属门的数据解析并显示到界面上只做功能实现不做界面美化硬件金属门一个、网线一根、电脑主机金属门网线可以直接接到电脑主机上开发环境vs2017 系统win10涵盖知识点tcp通讯、文件写入、多线程委托、类型转换等软件操作流程点击开始监听按钮9082要是未被占用则开启监听然后人通过金属门就可以接收到数据金属门数据协议截图知识点介绍  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 “”                        }); 不完善的地方金属门每通过一次会发送三条数据三条数据间有时间间隔所以为了接收到完整数据我 Thread.Sleep(1000);睡了1秒钟所以几个人同时通过金属门会有数据丢包暂时没做相应处理。完整代码如下using System; using System.Net; using System.Net.NetworkInformation; using System.Net.Sockets; using System.Windows.Forms; using System.IO; using System.Threading;namespace TcpRecive {public partial class mainForm : Form{public mainForm(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){textBox1.Text 9082; }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(ip, 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[1024];//对data清零//for (int i 0; i data.Length; i) { data[i] 0; }Socket clientSocket socket.Accept(); //一旦接受连接创建一个客户端Thread.Sleep(1000);//不延时收不到完整数据可能是三组数据间有时间间隔recv clientSocket.Receive(data);// 或者clientSocket.Receive(data, data.Length, SocketFlags.None);获取收到的数据的长度if (recv 0) //如果收到的数据长度小于0则退出break;//string stringData Encoding.UTF8.GetString(data);//string stringData byteToHexStr(data);//MessageBox.Show( dataDecode(data).ToString());//dataDecode(data);string stringData 0xBitConverter.ToString(data, recv-32,32).Replace(-, 0x).ToLower();//只取最后32个字节的数据//string stringData Encoding.ASCII.GetString(data);this.Invoke((EventHandler)delegate{richTextBox1.Text DateTime.Now.ToString(yy-MM-dd hh:mm:ss) 安检人数: dataDecode(data, 0, recv) 报警人数: dataDecode(data, 1, recv) 报警信息 alarmPosition(data, recv) \n stringData \n;});fileWrite(DateTime.Now.ToString(yy-MM-dd hh:mm:ss) \n stringData);}catch { };}}){ 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 int dataDecode(byte[] data, int type,int dataLength){int personNum 0;switch (type){case 0:personNum Convert.ToInt32(BitConverter.ToString(data, dataLength-27, 4).Replace(-, ), 16); break; //取出对应位置连续四个字节并转换为通过人数case 1:personNum Convert.ToInt32(BitConverter.ToString(data, dataLength-23, 4).Replace(-, ), 16); break; //取出对应位置连续四个字节并转换为报警人数 default:; break;}return personNum;}public string alarmPosition(byte[] bytes, int dataLength){string alarmStr ;for(int i0;i10;i){if (bytes[dataLength i - 19] 0x00)continue;//0x00则退出本次循环switch (bytes[dataLengthi-19]){case 0x01: alarmStr 区位 (i 1).ToString() 工具刀枪; break;case 0x02: alarmStr 区位 (i 1).ToString() 马口铁罐体; break;case 0x03: alarmStr 区位 (i 1).ToString() 铝制易拉罐; break;case 0x04: alarmStr 区位 (i 1).ToString() 违禁品混合; break;case 0x05: alarmStr 区位 (i 1).ToString() 铜制铝制管体; break;case 0x09: alarmStr 区位 (i 1).ToString() 手机手表; break;case 0x0a: alarmStr 区位 (i 1).ToString() 全金属报警; break;case 0X30: alarmStr 区位 (i 1).ToString() 非磁性枪支; break;default: alarmStr ; break;}}if (alarmStr )return 无报警;else return alarmStr;}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.pierceye.com/news/555297/

相关文章:

  • 北辰网站开发淮北哪有做淘宝网站
  • 建设银行e路通网站室内设计师证需要学哪些课程
  • 舟山市建设信息港网站打不开如何建设一个收费的影视图文网站
  • 内蒙建设信息网站网页制作作品阐述
  • 天津网站seo策划服装定制项目计划书
  • 常州网站建设大全买奢侈品代工厂做的产品的网站名
  • 建设网站如入什么费网站建设体会doc
  • 不备案怎么做淘宝客网站吗深圳华强北新闻最新消息今天
  • 梅兰商贸网站开发设计外国网站在中国做推广
  • 有无专门做网站会员人数迅速增加的方法北京单页营销型网站
  • 岳阳网站开发网站运营怎么做建设网站设计
  • 能打开各种网站的浏览器下载合集建设农产品网络营销网站
  • 陕西网站建设方案优化如何做网站挂qq
  • 无锡市网站WordPress分类id在哪
  • 网站建设金网站建设 需求模板
  • 提高网站转化率营销网站制作都选ls15227
  • 一级页面的网站怎么做爱疯卷网站怎么做
  • 网站企业快速备案大气的企业网站
  • 一个好的网站建设微网站手机制作
  • 广州市做民宿什么网站比较好图盛网站建设
  • 深圳做网站佰达科技二十七易语言做网站源码
  • 水禾田网站建设公司南沙区做网站
  • 江西赣州网站上海企业服务云电话
  • 洱源网站建设品牌名字大全
  • 网站建设阶段要做什么帝国cms对比WordPress
  • 盐城做企业网站多少钱网页设计个人总结800
  • 北京做兼职网站温州网站建设模板下载免费
  • 推进门户网站建设方案wordpress插件自动更新
  • 学院网站建设成效做网站需要什么功能
  • o2o手机网站建设技术网站设计师专业