using System; using System.Collections.Generic; using System.Data; using System.Dynamic; using System.IO; using System.Net; using System.Net.Http; using System.Net.Sockets; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.Entity; namespace UAS_MES_NEW.PublicMethod { public class BindItem { [JsonProperty("bindKey")] public string BindKey { get; set; } [JsonProperty("bindValue")] public string BindValue { get; set; } [JsonProperty("keyType")] public string KeyType { get; set; } [JsonProperty("keyValue")] public string KeyValue { get; set; } [JsonProperty("hashType")] public string HashType { get; set; } [JsonProperty("hashKey")] public string HashKey { get; set; } } public class RootObject { [JsonProperty("productModuleType")] public string ProductModuleType { get; set; } [JsonProperty("productMainClass")] public string ProductMainClass { get; set; } [JsonProperty("productMediumClass")] public string ProductMediumClass { get; set; } [JsonProperty("productSubClass")] public string ProductSubClass { get; set; } [JsonProperty("task")] public string Task { get; set; } [JsonProperty("processType")] public string ProcessType { get; set; } [JsonProperty("userId")] public string UserId { get; set; } [JsonProperty("bindList")] public List BindList { get; set; } } public class DeviceInfo { [JsonProperty("tool_name")] public string ToolName { get; set; } [JsonProperty("response")] public string Response { get; set; } [JsonProperty("status")] public int Status { get; set; } [JsonProperty("product_name")] public string ProductName { get; set; } [JsonProperty("product_mode")] public string ProductMode { get; set; } [JsonProperty("material_code")] public string MaterialCode { get; set; } [JsonProperty("batch_no")] public string BatchNo { get; set; } [JsonProperty("production_date")] public string ProductionDate { get; set; } [JsonProperty("big_box_no")] public string BigBoxNo { get; set; } [JsonProperty("box_no")] public string BoxNo { get; set; } [JsonProperty("reserve10")] public string Reserve10 { get; set; } [JsonProperty("packing_num")] public int PackingNum { get; set; } [JsonProperty("soft_version")] public string SoftVersion { get; set; } [JsonProperty("hd_version")] public string HdVersion { get; set; } [JsonProperty("voltage")] public string Voltage { get; set; } [JsonProperty("power")] public string Power { get; set; } [JsonProperty("order_no")] public string OrderNo { get; set; } // 使用字典或列表来存储序列化的数组数据 public List DSN { get; set; } = new List(); public List MacStart { get; set; } = new List(); public List MacEnd { get; set; } = new List(); public List DeviceId { get; set; } = new List(); public List DevEnNo { get; set; } = new List(); public List Reserve3 { get; set; } = new List(); public List Reserve4 { get; set; } = new List(); } public class DeviceInfoConverter : JsonConverter { public override DeviceInfo ReadJson(JsonReader reader, System.Type objectType, DeviceInfo existingValue, bool hasExistingValue, JsonSerializer serializer) { JObject jsonObject = JObject.Load(reader); DeviceInfo deviceInfo = new DeviceInfo(); // 解析基本字段 serializer.Populate(jsonObject.CreateReader(), deviceInfo); // 解析数组字段 ParseArrayFields(jsonObject, deviceInfo); return deviceInfo; } public override void WriteJson(JsonWriter writer, DeviceInfo value, JsonSerializer serializer) { throw new NotImplementedException(); } private void ParseArrayFields(JObject jsonObject, DeviceInfo deviceInfo) { int index = 0; // 解析 d_sn 数组 while (true) { string key = $"d_sn{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.DSN.Add(value.ToString()); index++; } else { break; } } // 解析 mac_start 数组 index = 0; while (true) { string key = $"mac_start{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.MacStart.Add(value.ToString()); index++; } else { break; } } // 解析 mac_end 数组 index = 0; while (true) { string key = $"mac_end{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.MacEnd.Add(value.ToString()); index++; } else { break; } } // 解析 dev_en_no 数组 index = 0; while (true) { string key = $"dev_en_no{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.DevEnNo.Add(value.ToString()); index++; } else { break; } } // 解析 reserve3 数组 index = 0; while (true) { string key = $"reserve3_{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.Reserve3.Add(value.ToString()); index++; } else { break; } } // 解析 reserve4 数组 index = 0; while (true) { string key = $"reserve4_{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.Reserve4.Add(value.ToString()); index++; } else { break; } } // 解析 DeviceId 数组 index = 0; while (true) { string key = $"DeviceId{index}"; if (jsonObject.TryGetValue(key, out JToken value)) { deviceInfo.DeviceId.Add(value.ToString()); index++; } else { break; } } } } public class HttpServer { static DataHelper dh = new DataHelper(); public static int SN_SERVICE_PORT = 21610; public static int MAX_BUF_SIZE = 8192; static string ComputeSha256Hash(string input) { using (SHA256 sha256 = SHA256.Create()) { byte[] bytes = Encoding.UTF8.GetBytes(input); byte[] hashBytes = sha256.ComputeHash(bytes); StringBuilder builder = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) { builder.Append(hashBytes[i].ToString("x2")); } return builder.ToString().ToUpper(); } } //获取SN的EN号,彩盒标机身标一个工站一起打印,需要SN单个获取 public static void GetEN(string iSN) { DataTable dt = (DataTable)dh.ExecuteSql("select ma_custpo,ms_makecode,pr_prefix,PREFIX_EN_NO,PREFIX_BIG_BOX,pr_prebigxbox,pr_regcode from makeserial left join product on ms_prodcode=pr_code left join make on ma_code=ms_makecode left join ZTE_ORDER on ma_custpo=po_sn where ms_sncode ='" + iSN + "' or ms_firstsn='" + iSN + "' order by ms_id desc", "select"); string prefix = ""; string regcode = ""; string makecode = ""; string prebigxbox = ""; string po = ""; string ms_id = ""; if (dt.Rows.Count > 0) { prefix = dt.Rows[0]["PREFIX_EN_NO"].ToString(); regcode = dt.Rows[0]["pr_regcode"].ToString(); makecode = dt.Rows[0]["ms_makecode"].ToString(); prebigxbox = dt.Rows[0]["PREFIX_BIG_BOX"].ToString(); po = dt.Rows[0]["ma_custpo"].ToString(); ms_id = dt.Rows[0]["ms_id"].ToString(); } dynamic obj = new ExpandoObject(); obj.tool_name = "zte"; obj.request = "Storage2"; obj.User = "mes"; obj.password = "258456"; obj.po_sn = po; obj.wholeDeviceCode = iSN; obj.reg_code = regcode; obj.prefix_en_no = prefix; obj.prefix_big_box = prebigxbox; obj.packing_num = 6; obj.isn = iSN; string json = JsonConvert.SerializeObject(obj, Formatting.Indented); string returnstr = ToServerReq(json); dh.ExecuteSql("insert into EISDATA(ED_ID, ED_DATA, ED_INDATE, ED_TYPE)values(EISDATA_seq.nextval,'" + json + "',sysdate,'GETEN')", "insert"); JObject deviceObj = JObject.Parse(returnstr); string WholeDeviceCode = deviceObj["WholeDeviceCode"].ToString(); string SN = deviceObj["SN"].ToString(); string dev_en_no = deviceObj["dev_en_no"].ToString(); string mac = deviceObj["mac"].ToString(); string mac_start = deviceObj["mac_start"].ToString(); string mac_end = deviceObj["mac_end"].ToString(); string reg_code = deviceObj["reg_code"].ToString(); string reserve3 = deviceObj["reserve3"].ToString(); string status = deviceObj["status"].ToString(); string device_type = deviceObj["device_type"].ToString(); string en_no = deviceObj["en_no"].ToString(); if (dh.CheckExist("ZTEDATA", "zd_sn='" + iSN + "' and zd_makecode='" + makecode + "' and zd_type='彩盒机身标'")) { dh.ExecuteSql("delete from ZTEDATA where zd_sn='" + iSN + "' and zd_makecode='" + makecode + "' and zd_type='彩盒机身标'", "delete"); } dh.ExecuteSql("update makeserial set ms_sncode='" + dev_en_no + "' where ms_id='" + ms_id + "'", "update"); dh.ExecuteSql("insert into ZTEDATA(ZD_ID,ZD_D_SN,zd_WholeDeviceCode,ZD_DEV_EN_NO,ZD_SN, ZD_MAKECODE, ZD_TYPE, ZD_VALUE,zd_mac,ZD_MAC_START, ZD_MAC_END,ZD_RESERVE3,zd_enno,zd_devicetype,zd_regcode)" + "values(ZTEDATA_seq.nextval,'" + SN + "','" + WholeDeviceCode + "','" + dev_en_no + "','" + iSN + "','" + makecode + "','彩盒机身标','','" + mac + "','" + mac_start + "','" + mac_end + "','" + reserve3 + "','" + en_no + "','" + device_type + "','" + reg_code + "')", "insert"); } private string HandleWebException(WebException ex) { if (ex.Response != null) { using (HttpWebResponse response = (HttpWebResponse)ex.Response) using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) { string errorResponse = reader.ReadToEnd(); Console.WriteLine($"HTTP错误状态码: {(int)response.StatusCode} {response.StatusCode}"); Console.WriteLine($"错误响应: {errorResponse}"); return errorResponse; } } else { string errorMsg = $"网络错误: {ex.Message}"; Console.WriteLine(errorMsg); return errorMsg; } } //发送外箱号数据,打印前获取 public static async void SendBoxData(string iBox) { string sn = dh.getFieldDataByCondition("packagedetail", "replace(wm_concat(pd_barcode),',','-')", "pd_outboxcode='" + iBox + "'").ToString(); DataTable dt = (DataTable)dh.ExecuteSql("select pr_code,pr_custmachinetype,ms_makecode from makeserial left join product on ms_prodcode=pr_code where ms_outboxcode ='" + iBox + "' order by ms_id desc", "select"); string pr_custmachinetype = ""; string makecode = ""; string pr_code = ""; if (dt.Rows.Count > 0) { pr_custmachinetype = dt.Rows[0]["pr_custmachinetype"].ToString(); makecode = dt.Rows[0]["ms_makecode"].ToString(); pr_code = dt.Rows[0]["pr_code"].ToString(); } var root = new RootObject { ProductModuleType = "整机", ProductMainClass = "固网_CPE", ProductMediumClass = "CPE", ProductSubClass = pr_custmachinetype, Task = makecode, ProcessType = "生产过程", UserId = User.UserName, BindList = new List() }; root.BindList.Add(new BindItem { BindKey = "cartonSn", BindValue = iBox, KeyType = "macbox", KeyValue = sn, HashType = "SHA256", HashKey = ComputeSha256Hash(sn) }); dt = (DataTable)dh.ExecuteSql("select pd_barcode from packagedetail where pd_outboxcode='" + iBox + "'", "select"); DataTable dt1 = (DataTable)dh.ExecuteSql("select pid_sql,pid_item,pid_value,pid_valuetype from productitem left join productitemdetail on pid_piid=pi_id where pi_prodcode='" + pr_code + "'", "select"); for (int i = 0; i < dt.Rows.Count; i++) { for (int j = 0; j < dt1.Rows.Count; j++) { if (dt1.Rows[j]["pid_valuetype"].ToString() == "SHA256") { root.BindList.Add(new BindItem { BindKey = "mac", BindValue = dt.Rows[i]["pd_barcode"].ToString(), KeyType = dt1.Rows[j]["pid_item"].ToString(), KeyValue = dt1.Rows[j]["pid_item"].ToString(), HashType = "SHA256", HashKey = ComputeSha256Hash(sn), }); ; } else { string sql = dt1.Rows[j]["pid_sql"].ToString(); string value = ""; if (sql != "") { Regex ConnoteA = new Regex("{\\w+}"); foreach (Match mch in ConnoteA.Matches(sql)) { string x = mch.Value.Trim(); sql = sql.Replace(x, "'" + dt.Rows[i]["pd_barcode"].ToString() + "'"); } DataTable Param = (DataTable)dh.ExecuteSql(sql.ToString(), "select"); if (Param.Rows.Count > 0) { value = Param.Rows[0][0].ToString(); } } else { value = dt1.Rows[j]["pid_value"].ToString(); } root.BindList.Add(new BindItem { BindKey = "mac", BindValue = dt.Rows[i]["pd_barcode"].ToString(), KeyType = dt1.Rows[j]["pid_item"].ToString(), KeyValue = value, HashType = "NON-HASH", HashKey = dt1.Rows[j]["pid_item"].ToString(), }); } } } var httpClientHandler = new HttpClientHandler(); httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; using (var client = new HttpClient(httpClientHandler)) { client.DefaultRequestHeaders.Add("apikey", "60e7107a86284a6d842e551704e69253"); client.DefaultRequestHeaders.Add("AppCode", "91678314583d4c2bbf185bc5573ac73d"); StringBuilder sbText = new StringBuilder(); string json = JsonConvert.SerializeObject(root, Formatting.Indented); json = "{\"productModuleType\":\"整机\",\"productMainClass\":\"固网_CPE\",\"productMediumClass\":\"CPE\",\"productSubClass\":\"MMC233Z-A-V1(红蓝灯一键报警版)\",\"task\":\"2025100007\",\"processType\":\"生产过程\",\"userId\":\"邓帝森\",\"bindList\":[{\"bindKey\":\"cartonSn\",\"bindValue\":\"4NAURB8C0001\",\"keyType\":\"macbox\",\"keyValue\":\"F8731AFE8FE7-F8731AFE904E-F8731AFE91A9-F8731AFE9218-F8731AFE8F27-F8731AFE9219\",\"hashType\":\"SHA256\",\"hashKey\":\"AFAE8846D28E2D61E6D12F95D03DC9E911EB59104055FD333F5D98790D2985E2\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE8FE7\",\"keyType\":\"EN\",\"keyValue\":\"4NAURB800001\",\"hashType\":\"NON-HASH\",\"hashKey\":\"4NAURB800001\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE8FE7\",\"keyType\":\"WholeDeviceCode\",\"keyValue\":\"187928621671400\",\"hashType\":\"NON-HASH\",\"hashKey\":\"187928621671400\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE904E\",\"keyType\":\"EN\",\"keyValue\":\"4NAURB800002\",\"hashType\":\"NON-HASH\",\"hashKey\":\"4NAURB800002\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE904E\",\"keyType\":\"WholeDeviceCode\",\"keyValue\":\"187928621671503\",\"hashType\":\"NON-HASH\",\"hashKey\":\"187928621671503\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE91A9\",\"keyType\":\"EN\",\"keyValue\":\"4NAURB800003\",\"hashType\":\"NON-HASH\",\"hashKey\":\"4NAURB800003\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE91A9\",\"keyType\":\"WholeDeviceCode\",\"keyValue\":\"187928621671850\",\"hashType\":\"NON-HASH\",\"hashKey\":\"187928621671850\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE9218\",\"keyType\":\"EN\",\"keyValue\":\"4NAURB800004\",\"hashType\":\"NON-HASH\",\"hashKey\":\"4NAURB800004\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE9218\",\"keyType\":\"WholeDeviceCode\",\"keyValue\":\"187928621671961\",\"hashType\":\"NON-HASH\",\"hashKey\":\"187928621671961\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE8F27\",\"keyType\":\"EN\",\"keyValue\":\"4NAURB800005\",\"hashType\":\"NON-HASH\",\"hashKey\":\"4NAURB800005\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE8F27\",\"keyType\":\"WholeDeviceCode\",\"keyValue\":\"187928621671208\",\"hashType\":\"NON-HASH\",\"hashKey\":\"187928621671208\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE9219\",\"keyType\":\"EN\",\"keyValue\":\"4NAURB800006\",\"hashType\":\"NON-HASH\",\"hashKey\":\"4NAURB800006\"},{\"bindKey\":\"mac\",\"bindValue\":\"F8731AFE9219\",\"keyType\":\"WholeDeviceCode\",\"keyValue\":\"187928621671962\",\"hashType\":\"NON-HASH\",\"hashKey\":\"187928621671962\"}]}"; var content = new StringContent(json, Encoding.UTF8, "application/json"); var response = await client.PostAsync("https://172.30.30.10:29001/api/mds-web-outservice/v1/api/rest/mds/saveFmKeyHashcodeInfoBatch", content); if (response.IsSuccessStatusCode) { } //var httpClientHandler = new HttpClientHandler(); //httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, errors) => { return true; }; //string json = JsonConvert.SerializeObject(root, Formatting.Indented); //using (var client = new HttpClient(httpClientHandler)) //{ // client.DefaultRequestHeaders.Add("apikey", "60e7107a86284a6d842e551704e69253"); // client.DefaultRequestHeaders.Add("AppCode", "91678314583d4c2bbf185bc5573ac73d"); // var content = new StringContent(json, Encoding.UTF8, "application/json"); // var response = client.PostAsync("https://172.30.30.10:29001/api/mds-web-outservice/v1/api/rest/mds/saveFmKeyHashcodeInfoBatch", content); // Console.WriteLine(response.ToString()); // if (response.IsCompleted) { // } //} //string url = "https://172.30.30.10:29001/api/mds-web-outservice/v1/api/rest/mds/saveFmKeyHashcodeInfoBatch"; //try //{ // // 忽略SSL证书验证 // ServicePointManager.ServerCertificateValidationCallback = // (sender, certificate, chain, sslPolicyErrors) => true; // ServicePointManager.Expect100Continue = false; // using (WebClient client = new WebClient()) // { // // 设置请求头 // client.Headers.Add("apikey", "60e7107a86284a6d842e551704e69253"); // client.Headers.Add("AppCode", "91678314583d4c2bbf185bc5573ac73d"); // client.Headers.Add("Content-Type", "application/json; charset=utf-8"); // client.Encoding = Encoding.UTF8; // // 发送POST请求 // string response = client.UploadString(url, "POST", json); // Console.WriteLine($"请求成功!"); // Console.WriteLine($"响应内容: {response}"); // } //} //catch (Exception ex) //{ // Console.WriteLine($"发生错误: {ex.Message}"); // throw; //} } } //获取外箱号信息 public static void GetOutBoxInfo(string iBox) { dynamic obj = new ExpandoObject(); var expandoDict = obj as IDictionary; DataTable dt = (DataTable)dh.ExecuteSql("select ma_custpo,pd_barcode,pd_makecode,ZD_DEV_EN_NO from packagedetail left join ZTEDATA on zd_makecode=pd_makecode and pd_barcode=zd_sn left join make on ma_code=pd_makecode where pd_outboxcode='" + iBox + "'", "select"); string makecode = ""; string po = ""; for (int i = 0; i < dt.Rows.Count; i++) { string enNoKey = $"en_no{i}"; string enNoValue = dt.Rows[i]["ZD_DEV_EN_NO"].ToString(); expandoDict[enNoKey] = enNoValue; makecode = dt.Rows[i]["pd_makecode"].ToString(); po = dt.Rows[i]["ma_custpo"].ToString(); } obj.request = "Q_wai_xiang"; obj.packing_num = dt.Rows.Count; obj.User = "mes"; obj.po_sn = po; obj.password = "258456"; obj.tool_name = "zte"; obj.noType = 0; string json = JsonConvert.SerializeObject(obj, Formatting.Indented); string returnstr = ToServerReq(json); dh.ExecuteSql("insert into EISDATA(ED_ID, ED_DATA, ED_INDATE, ED_TYPE)values(EISDATA_seq.nextval,'" + json + "',sysdate,'GetOutBoxInfo')", "insert"); var settings = new JsonSerializerSettings { Converters = new List { new DeviceInfoConverter() } }; DeviceInfo deviceInfo = JsonConvert.DeserializeObject(returnstr, settings); for (int i = 0; i < deviceInfo.DSN.Count; i++) { Console.WriteLine($"设备 {i}:"); Console.WriteLine($" 序列号: {deviceInfo.DSN[i]}"); Console.WriteLine($" MAC起始: {deviceInfo.MacStart[i]}"); Console.WriteLine($" MAC结束: {deviceInfo.MacEnd[i]}"); Console.WriteLine($" 设备编码: {deviceInfo.DevEnNo[i]}"); Console.WriteLine($" 预留3: {deviceInfo.Reserve3[i]}"); } //将返回的信息存入数据库 for (int i = 0; i < deviceInfo.DSN.Count; i++) { if (dh.CheckExist("ZTEDATA", "zd_sn='" + deviceInfo.DSN[i] + "' and zd_makecode='" + makecode + "' and zd_type='BOX'")) { dh.ExecuteSql("delete from ZTEDATA where zd_sn='" + deviceInfo.DSN[i] + "' and zd_makecode='" + makecode + "' and zd_type='BOX'", "delete"); } dh.ExecuteSql("insert into ZTEDATA(ZD_ID,ZD_SN, ZD_MAKECODE, ZD_TYPE, ZD_VALUE,ZD_product_mode, ZD_PRODUCTNAME, ZD_MATERIAL_CODE, ZD_BATCH_NO, ZD_SOFT_VERSION, ZD_HD_VERSION, " + "ZD_VOLTAGE, ZD_POWER, ZD_ORDER_NO, ZD_BIG_BOX_NO, ZD_D_SN, ZD_DEV_EN_NO, ZD_RESERVE3, ZD_DEVICEID, ZD_MAC_START, ZD_MAC_END,zd_production_date, ZD_INDATE)" + "values(ZTEDATA_seq.nextval,'" + deviceInfo.DSN[i] + "','" + makecode + "','BOX','" + deviceInfo.DSN[i] + "','" + deviceInfo.ProductMode + "','" + deviceInfo.ProductName + "','" + deviceInfo.MaterialCode + "','" + deviceInfo.BatchNo + "','" + deviceInfo.SoftVersion + "','" + deviceInfo.HdVersion + "'," + "'" + deviceInfo.Voltage + "','" + deviceInfo.Power + "','" + deviceInfo.OrderNo + "','" + deviceInfo.BigBoxNo + "','" + deviceInfo.DSN[i] + "'," + "'" + deviceInfo.DevEnNo[i] + "', '" + deviceInfo.Reserve3[i] + "','" + deviceInfo.DeviceId[i] + "','" + deviceInfo.MacStart[i] + "','" + deviceInfo.MacEnd[i] + "','" + deviceInfo.ProductionDate + "',sysdate)", "insert"); } Console.WriteLine(json); } //获取栈板信息 public static void GetPalletInfo(string iBox) { DataTable dt = (DataTable)dh.ExecuteSql("select pa_outboxcode,pa_makecode from package where pa_mothercode='" + iBox + "'", "select"); dynamic obj = new ExpandoObject(); var expandoDict = obj as IDictionary; string makecode = ""; for (int i = 0; i < dt.Rows.Count; i++) { string enNoKey = $"big_box_no{i}"; string enNoValue = dt.Rows[i]["pa_outboxcode"].ToString(); expandoDict[enNoKey] = enNoValue; makecode = dt.Rows[i]["pa_makecode"].ToString(); } obj.request = "pallet"; obj.packing_num = dt.Rows.Count; obj.User = "mes"; obj.po_sn = makecode; obj.password = "258456"; obj.tool_name = "zte"; string json = JsonConvert.SerializeObject(obj, Formatting.Indented); dh.ExecuteSql("insert into EISDATA(ED_ID, ED_DATA, ED_INDATE, ED_TYPE)values(EISDATA_seq.nextval,'" + json + "',sysdate,'GetPalletInfo')", "insert"); string returnstr = ToServerReq(json); Console.WriteLine(returnstr); Console.WriteLine(json); } public static readonly uint PROTOCOL_FLAG = 0x4C4F4F54; public static string ToServerReq(string strJSON) { int nRet = 0; string strServerIP = "192.168.1.160"; string strResp = ""; IPAddress ip = IPAddress.Parse(strServerIP); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); while (true) { try { clientSocket.Connect(new IPEndPoint(ip, SN_SERVICE_PORT)); } catch { nRet = -13; break; } try { FACT_DATA_HEAD stHead = new FACT_DATA_HEAD(null); byte[] bytJson = Encoding.UTF8.GetBytes(strJSON); //Encoding.ASCII.GetBytes(strJSON); stHead.setDataLen(bytJson.Length); byte[] bytBuf = new byte[FACT_DATA_HEAD.MY_LEN + bytJson.Length]; byte[] bytSrcHead = stHead.getBytes(); Array.Copy(bytSrcHead, 0, bytBuf, 0, bytSrcHead.Length); Array.Copy(bytJson, 0, bytBuf, FACT_DATA_HEAD.MY_LEN, bytJson.Length); clientSocket.Send(bytBuf); } catch { nRet = -12; break; } //判定接口回传的flag和本地传过去的是否一致 byte[] bytRecv = new byte[MAX_BUF_SIZE]; int nRecvSize = 0, nSize = 0; nRecvSize = clientSocket.Receive(bytRecv, 0, FACT_DATA_HEAD.MY_LEN, SocketFlags.None); if (nRecvSize > 0) { FACT_DATA_HEAD stHead = new FACT_DATA_HEAD(bytRecv); Console.WriteLine(stHead.getFlag()); Console.WriteLine(FACT_DATA_HEAD.PROTOCOL_FLAG); if (stHead.getFlag() == FACT_DATA_HEAD.PROTOCOL_FLAG) { int nPos = 0; nSize = stHead.getDatalen(); while (nPos < nSize) { nRecvSize = clientSocket.Receive(bytRecv, nPos, nSize - nPos, SocketFlags.None); if (nRecvSize < 0) { nRet = -14; break; } nPos += nRecvSize; } strResp = Encoding.Default.GetString(bytRecv, 0, nSize); } else nRet = -11; } else nRet = -10; break; } if (nRet > -13) clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); return strResp; } } }