using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace MyProject
{
public class TcpClient
{
public Socket ConnectSocket { get; set; }
public bool ConnectFlag { get; set; } = false;
public bool ReceiveFlag { get; set; } = false;
public int ReceiveLength { get; set; }
public byte[] ReceiveBuffer { get; set; } = new byte[1024];
public int Connect(string ip, int port)
{
if (!ConnectFlag)
{
ConnectSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipAndPort = new IPEndPoint(IPAddress.Parse(ip), port);
try
{
ConnectSocket.Connect(ipAndPort);
Thread threadReceive = new Thread(Receive);
threadReceive.IsBackground = true;
threadReceive.Start();
ConnectFlag = true;
return 0;
}
catch (Exception)
{
return -1;
}
}
else
{
return 1;
}
}
public void Disconnect()
{
if (ConnectFlag)
{
try
{
ConnectSocket.Disconnect(true);
ConnectSocket.Close();
ConnectFlag = false;
}
catch (Exception)
{
}
}
}
private void Receive()
{
while (ConnectFlag)
{
try
{
ReceiveLength = ConnectSocket.Receive(ReceiveBuffer);
if (ReceiveLength == 0)
{
Thread.Sleep(100);
if (ConnectSocket.Connected)
{
ConnectSocket.Close();
ConnectFlag = false;
}
break;
}
else
{
ReceiveFlag = true;
}
}
catch (Exception)
{
break;
}
}
}
public int Send(byte[] buffer)
{
if (ConnectFlag)
{
try
{
ConnectSocket.Send(buffer);
return 0;
}
catch (Exception)
{
return -1;
}
}
else
{
return 1;
}
}
}
}
C# TCP客户端程序
最新推荐文章于 2024-07-22 09:37:30 发布