é¦å æ¯ç±»æ件
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Runtime.InteropServices;
using System.Text;
using System.Xml;
namespace Common
{
public class SocketWbHelper
{
[DllImport(@"D:\delphi_test.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern bool Submit(int iMainType, byte[] pchar_in, int len_in, byte[] pchar_out, ref int len_out);
private static object obj = new object();
/// <summary>
/// Socketåéæ°æ®å¤ç
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static Socket ConnectSvr()
{
string sip = System.Configuration.ConfigurationManager.AppSettings["SockIP"];
IPAddress ip = IPAddress.Parse(sip);
IPEndPoint ipe = new IPEndPoint(ip, 35232);
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
c.Connect(ipe);
return c;
}
/// <summary>
/// Socketåéæ°æ®å¤ç
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static Socket CloseConnectSvr(Socket c)
{
c.Shutdown(SocketShutdown.Both);
c.Close();
return c;
}
/// <summary>
/// Socketåéæ°æ®å¤ç
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static List<string> SendMsg(string str, Socket c)
{
lock (obj)
{
byte[] bsHead = BitConverter.GetBytes(2875566949);
byte[] bsData = Encoding.Default.GetBytes(str);
byte[] bsDataLength = BitConverter.GetBytes(bsData.Length);
byte[] bsNull = BitConverter.GetBytes(0);
byte[] bsSend = new byte[bsData.Length + 20];
bsHead.CopyTo(bsSend, 0);
bsDataLength.CopyTo(bsSend, 4);
bsNull.CopyTo(bsSend, 8);
bsNull.CopyTo(bsSend, 12);
bsNull.CopyTo(bsSend, 16);
bsData.CopyTo(bsSend, 20);
List<string> list = new List<string>();
byte[] recvBytes = new byte[20];
byte[] recvBytesEnd = null;
StringBuilder recvStrSb = new StringBuilder();
try
{
c.Send(bsSend, bsSend.Length, 0);
int bytes = 0;
bytes = c.Receive(recvBytes, recvBytes.Length, 0);
if (bytes > 0)
{
//è·åå°è¿åä¿¡æ¯çé¿åº¦
int lenth = BitConverter.ToInt32(recvBytes, 4);
recvBytesEnd = new byte[lenth];
bytes = c.Receive(recvBytesEnd, recvBytesEnd.Length, 0);
recvStrSb.Append(Encoding.Default.GetString(recvBytesEnd, 0, bytes));
}
list.Add("0");
list.Add(recvStrSb.ToString());
}
catch { list.Add("-10001"); }
return list;
}
}
/// <summary>
/// Socketåéæ°æ®å¤ç
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string MsgSend(string str,out int iResult,string sywid)
{
iResult = 0;
byte[] bsSend = Encoding.Default.GetBytes(str);
List<string> list = new List<string>();
StringBuilder recvStrSb = new StringBuilder();
byte[] outpchar = new byte[20000];
int out_len = 20000;
bool bResult = false;
try
{
bResult = Submit(Convert.ToInt32(sywid), bsSend, bsSend.Length, outpchar, ref out_len);
}
catch (Exception ex)
{
iResult = -1;
return "失败Submit:" + ex.Message;
}
try
{
if (bResult == true)
{
recvStrSb.Append(Encoding.Default.GetString(outpchar, 0, out_len));
}
else
{
iResult = -2;
recvStrSb.Append(Encoding.Default.GetString(outpchar, 0, out_len));
recvStrSb.Append(",æ¥å£è°ç¨å¤±è´¥!out_len:" + out_len);
}
}
catch (Exception ex)
{
iResult = -3;
return "失败recvStrSb:out_len," + out_len + "::" + ex.Message;
}
return recvStrSb.ToString();
}
/// <summary>
/// è·åXML对象
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static XmlDocument GetXMLDoc(string str)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(str.ToString());
return xmlDoc;
}
}
}
以ä¸æ¯è°ç¨æ¹æ³
private static ReturnDto SendSortInfo(string sRevMobile, string iRevProductid, string sAccount, int iTime=0, string sName = "æ¡å", string sywid = "1")
{
var sSendData = "<?xml version=\"1.0\" encoding=\"GB2312\"?><xml><sRevMobile>" + sRevMobile +
"</sRevMobile><iRevProductid>" + iRevProductid +
"</iRevProductid><iTime>" + iTime +
"</iTime><sAccount>" + sAccount +
"</sAccount><sName>" + sName +
"</sName></xml>";
var model = new ReturnDto();
int iInterfaceResult = 0;
string listResult = SocketWbHelper.MsgSend(sSendData, out iInterfaceResult, sywid);
if (iInterfaceResult < 0)
{//æ¥è¯¢å¼å¸¸
if (iInterfaceResult == -2)
{
//æ¥å£è¿åé误信æ¯
XmlDocument docValue = new XmlDocument();
docValue.LoadXml(listResult);
model.msg = docValue.SelectNodes("//Msg")[0].InnerText;
}
else
{
model.msg = listResult;
}
model.code = -1;
return model;
}
else
{
var docValue = new XmlDocument();
docValue.LoadXml(listResult);
model.msg = docValue.SelectNodes("//Msg")[0].InnerText;
}
model.code = model.msg.Trim().ToLower().Equals("ok") ? 1 : -2;
return model;
}
注æï¼
1.DLLçè·¯å¾è¦ç¨ç»å¯¹è·¯å¾ï¼å¦æè¦ç¨ç¸å¯¹è·¯å¾çè¯ï¼èªå·±è¦æ¾å¨å¯¹çä½ç½®ã
2.è¿ä¸ªdemoç¨çæ¯ XML åæ°ä¼ éæ¹å¼ï¼ä¼ å ¥åè¿åé½æ¯XMLã
3.å¨è°ç¨çå°æ¹ï¼å¯æ ¹æ®èªå·±çéæ±åï¼è¿åªæ¯ä¸ªæç¨çæ¹æ³ã