日期:2014-05-18 浏览次数:21244 次
/// <summary>
/// Socket通讯接受后转换成字符串
/// </summary>
/// <param name="ip">Socket通讯IP</param>
/// <param name="sendStr">发送内容</param>
/// <returns>通讯后终端返回字符串</returns>
public static string SocketSendAndReceiveString(IPEndPoint ip, string sendStr)
{
lock(ip)
{
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 10000);
s.Connect(ip);
byte[] sendBy = Encoding.UTF8.GetBytes(sendStr);
s.Send(sendBy, sendBy.Length, 0);
string recvStr = "";
byte[] recvBy = new byte[10024];
int bytes = 0;
bytes = s.Receive(recvBy, recvBy.Length, 0);
recvStr += Encoding.UTF8.GetString(recvBy, 0, bytes);
do
{
try
{
StringReader sr = new StringReader(recvStr);
XmlTextReader reader = new XmlTextReader(sr);
DataSet ds = new DataSet();
ds.ReadXml(reader);
break;
}
catch
{
bytes = s.Receive(recvBy, recvBy.Length, 0);
recvStr += Encoding.UTF8.GetString(recvBy, 0, bytes);
}
} while (true);
s.Close();
return recvStr;
}
catch (Exception ex)
{
s.Close();
return null;
//throw ex;
}
}
}