using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Mesnac.Communication
{
public class SyncSocketClient
{
private static SyncSocketClient instance = null;
///
/// 客户端连接Socket
///
private Socket clientSocket;
///
/// 连接点
///
private IPEndPoint hostEndPoint;
///
///
///
/// 服务端地址{IP地址}
/// 端口号
public SyncSocketClient(String hostName, Int32 port)
{
//IPHostEntry host = Dns.GetHostEntry(hostName);
//IPAddress[] addressList = host.AddressList;
//this.hostEndPoint = new IPEndPoint(addressList[addressList.Length - 1], port);
//this.clientSocket = new Socket(this.hostEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
}
///
/// 连接服务端
///
public string Send(String hostName, Int32 port, string message)
{
string receiveMsg = "";
IPHostEntry host = Dns.GetHostEntry(hostName);
IPAddress[] addressList = host.AddressList;
IPEndPoint hostPoint = new IPEndPoint(addressList[addressList.Length - 1], port);
using (clientSocket = new Socket(hostPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
{
clientSocket.Connect(hostPoint);
clientSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000);
byte[] sendMsg = Encoding.GetEncoding("GBK").GetBytes(message);
clientSocket.Send(sendMsg);
//设置超时
//clientSocket.ReceiveTimeout = 5000;
byte[] receiveByte = new byte[1024];
int count = 0;
try
{
count = clientSocket.Receive(receiveByte, receiveByte.Length, 0);//接受数据
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "接受信息超时!");
}
receiveMsg += Encoding.GetEncoding("GBK").GetString(receiveByte, 0, count);//转换为GBK格式的字符串
receiveMsg = receiveMsg.Replace("\n\r", "");
Console.WriteLine("接受信息:" + receiveMsg);
}
return receiveMsg;
}
///
/// TCP通信服务实例
///
public static SyncSocketClient Instance
{
get
{
if (instance == null)
{
instance = new SyncSocketClient("", 3666);
}
return instance;
}
}
}
}