通过Socket和TCP Client 两种方式都可以发送TCP请求,获取Response并返回:
public static string TCPClientRequest(int CommandType, string Body)
{
string Header = CreateHeader(CommandType, Body.Length);
StringBuilder FullReqstr = new StringBuilder();
FullReqstr.Append(Header);
FullReqstr.Append("\r\n");
FullReqstr.Append("\r\n");
FullReqstr.Append(Body);
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(IPAddress.Parse(server), port);
NetworkStream ntwStream = tcpClient.GetStream();
string recStr = "";
if (ntwStream.CanWrite)
{
Byte[] bytSend = Encoding.UTF8.GetBytes(FullReqstr.ToString());
ntwStream.Write(bytSend, 0, bytSend.Length);
ntwStream.Flush();
byte[] recBytes = new byte[4096];
int bytes = ntwStream.Read(recBytes, 0, recBytes.Length);
recStr += Encoding.ASCII.GetString(recBytes, 0, bytes);
Console.WriteLine(recStr);
}
else
{
Console.WriteLine("无法写入数据流");
ntwStream.Close();
tcpClient.Close();
}
ntwStream.Close();
tcpClient.Close();
return recStr;
}
public static string SocketRequest(int CommandType, string Body)
{
//创建实例
Socket socketClient = new Socket(SocketType.Stream, ProtocolType.Tcp);
IPAddress ip = IPAddress.Parse(server);
IPEndPoint point = new IPEndPoint(ip, port);
//进行连接
socketClient.Connect(point);
string Header = CreateHeader(CommandType, Body.Length);
StringBuilder FullReqstr = new StringBuilder();
FullReqstr.Append(Header);
FullReqstr.Append("\r\n");
FullReqstr.Append("\r\n");
FullReqstr.Append(Body);
Byte[] bytSend = Encoding.UTF8.GetBytes(FullReqstr.ToString());
socketClient.Send(bytSend, 0, bytSend.Length, SocketFlags.None);
string recStr = "";
byte[] recBytes = new byte[1024];
int bytes = socketClient.Receive(recBytes, recBytes.Length, SocketFlags.None);
recStr += Encoding.ASCII.GetString(recBytes, 0, bytes);
Console.WriteLine(recStr);
return recStr;
}