SCLS/SSWCS_JXDL(2019)/SocketsTCPIP/CClientTCPIP1.cs

149 lines
3.8 KiB
C#
Raw Normal View History

2025-05-19 09:45:29 +08:00
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace SocketsTCPIP
{
public class CClientTCPIP
{
TcpClient tc ;
string _tcpIpError = string.Empty;
public string TcpIpError
{
get { return _tcpIpError; }
set { _tcpIpError = value; }
}
public CClientTCPIP()
{
tc = new TcpClient();
}
public bool SendTCPIP(string sdata,string remoteip,int port)
{
tc = new TcpClient(remoteip, port);
NetworkStream netStream = tc.GetStream();
try
{
if (netStream.CanWrite)
{
Byte[] sendBytes = Encoding.UTF8.GetBytes(sdata);
netStream.Write(sendBytes, 0, sendBytes.Length);
}
else
{
tc.Close();
// Closing the tcpClient instance does not close the network stream.
netStream.Close();
return false;
}
//tc.Close();
netStream.Close();
return true;
}
catch (Exception ex)
{
tc.Close();
netStream.Close();
_tcpIpError=ex.Message;
return false;
}
}
public bool SendTCPIP(byte[] sdata, string remoteip, int port)
{
tc = new TcpClient(remoteip, port);
NetworkStream netStream = tc.GetStream();
try
{
if (netStream.CanWrite)
{
netStream.Write(sdata, 0, sdata.GetLength(0));
}
else
{
tc.Close();
// Closing the tcpClient instance does not close the network stream.
netStream.Close();
return false;
}
//tc.Close();
netStream.Close();
return true;
}
catch (Exception ex)
{
tc.Close();
netStream.Close();
_tcpIpError = ex.Message;
return false;
}
}
public byte[] ReceiveTCPIP(string remoteip, int port)
{
tc = new TcpClient(remoteip, port);
NetworkStream netStream = tc.GetStream();
byte[] bytes;
try
{
if (netStream.CanRead)
{
// Reads NetworkStream into a byte buffer.
bytes = new byte[tc.ReceiveBufferSize];
// Read can return anything from 0 to numBytesToRead.
// This method blocks until at least one byte is read.
//netStream.ReadTimeout = 5000;
//if (netStream.DataAvailable==true)
do
{
netStream.Read(bytes, 0, (int)tc.ReceiveBufferSize);
}
while (netStream.DataAvailable);
}
else
{
tc.Close();
// Closing the tcpClient instance does not close the network stream.
netStream.Close();
return null;
}
tc.Close();
netStream.Close();
return bytes;
}
catch (Exception ex)
{
tc.Close();
netStream.Close();
_tcpIpError = ex.Message;
return null;
}
}
}
}