upper-computer-program/DoAn/Core/通讯/SocketClientManager.cs

77 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace DoAn.Core
{
public class SocketClientManager
{
private string ip;
private int port;
private static Socket clientSocket;
private static Thread GetMessageThread = null;
public delegate void GetMessageDelegate<T>(T str1);
public event GetMessageDelegate<string> GetMessageEvent;
public SocketClientManager(string ip, int port)
{
this.ip = ip;
this.port = port;
}
public bool ConnectSocket()
{
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(ip), port);
try
{
clientSocket.Connect(ipEndPoint);
GetMessageThread = new Thread(GetMessage);
GetMessageThread.Start();
}
catch (Exception ex)
{
return false;
}
return true;
}
public bool SendMessage(string message)
{
byte[] sendMsg = Encoding.UTF8.GetBytes(message);
try
{
clientSocket.Send(sendMsg);
}
catch (Exception)
{
return false;
}
return true;
}
public void GetMessage()
{
while (true)
{
byte[] receiveByte = new byte[1024];
int length = clientSocket.Receive(receiveByte);
string str = Encoding.UTF8.GetString(receiveByte, 0, length);
if (str.Length > 0)
{
if (null != GetMessageEvent)
GetMessageEvent(str);
}
}
}
}
}