Newer
Older
IRIS_REFACTOR / irisPrint / Impl / PrintHelper.cs
using irisPrint.service;
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace irisPrint.Impl
{
    public class PrintHelper: PrintInterface
    {
        private Socket socketClient;

        public void Print(String iDCardNo, String deviceSN, String destIP, String destPort)
        {
            string info = CreateInfo(iDCardNo, deviceSN, "");

            PrintParam printParam = new PrintParam(info, destIP, destPort);
            SendInfo(printParam);
        }

        public void PrintTest(String iDCardNo, String destUrl)
        {
            string url = destUrl + "?userId=" + iDCardNo;

            HttpGet(url);
        }

        private string HttpGet(string url)
        {
            //创建
            HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            //设置请求方法
            httpWebRequest.Method = "GET";
            //请求超时时间
            httpWebRequest.Timeout = 20000;
            //发送请求
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            //利用Stream流读取返回数据
            StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.UTF8);
            //获得最终数据,一般是json
            string responseContent = streamReader.ReadToEnd();
            streamReader.Close();
            httpWebResponse.Close();
            return responseContent;
        }


        private void SendInfo(PrintParam printParam)
        {
            Thread sendThread = new Thread(new ParameterizedThreadStart(SendInfoFunction));
            sendThread.Start(printParam);
        }


        private void SendInfoFunction(object Msg)
        {
            try
            {
                PrintParam msg = (PrintParam)Msg;

                IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(msg.DestIP), Convert.ToInt32(msg.DestPort));
                socketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                socketClient.Connect(endpoint);
                if (socketClient.Connected)
                {
                    byte[] msgbytes = System.Text.Encoding.Default.GetBytes(msg.Info);
                    int i = Net.SendData(socketClient, msgbytes, -1);
                    if (i == 0)
                    {
                        socketClient.Close();
                    }
                    else
                    {

                    }
                }
            }
            catch (Exception ex)
            {

            }

        }

        private string CreateInfo(string IDCardNo, string deviceSN, string errorMsg)
        {
            string newIDCardNo = "";

            //发送真实身份证号
            if (IDCardNo != "" && IDCardNo != null)
            {
                newIDCardNo = IDCardNo;
            }
            else
            {
                newIDCardNo = "IDCardNoIsNull";
            }

            string info = "<Info><SFZH>" + newIDCardNo + "</SFZH><Flag>" + deviceSN + "</Flag><Error>" + errorMsg + "</Error></Info>";
            return info;
        }


    }
}