///url:地址 data:数据
public static string GetContentFromUrl(string url, string data)
{ //寻址方案。ip4地址 // 套接字类型
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ip = new IPEndPoint(IPAddress.Parse(url), 端口);
socket.Connect(ip);//连接
char[] cmgs = data.ToCharArray(); //字符串转字符数组
byte[] message = new byte[1024];
message = Encoding.UTF8.GetBytes(data);
socket.Send(message); //发送数据
byte[] bytes = new byte[1024];
socket.Receive(bytes); //接收数据
string messages = Encoding.Default.GetString(bytes, 0, bytes.Length);
return messages; //返回数据
socket.Close();
}
/// <summary>
/// 连接服务 接收大数据量
/// </summary>
/// <param name="url"></param>
/// <param name="data"></param>
/// <returns></returns>
public static string GetContentFromUrl(string url, string data)
{
Socket sokClient = null;
string Message = "";
try
{
sokClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress address = IPAddress.Parse(url);
IPEndPoint point = new IPEndPoint(address, 8108);
sokClient.Blocking = true; //没有数据接受时挂起等待, 知道有数据时
sokClient.Connect(point);
char[] cmgs = data.ToCharArray(); //字符串转字符数组
byte[] message = new byte[1024];
message = Encoding.Default.GetBytes(data);
sokClient.Send(message);
byte[] totalBytes = null;
int receiveLength = 0;
do
{
byte[] buffer = new byte[1024];
receiveLength = sokClient.Receive(buffer, buffer.Length,0); //接受数据长度
if (totalBytes == null) //第一次接收数据
{
totalBytes = new byte[receiveLength]; //声明byte
//从指定数组的 位置 复制到另一数组的指定位置
Buffer.BlockCopy(buffer, 0, totalBytes, 0, receiveLength);
}
else
{
byte[] appendBytes = new byte[receiveLength];
Buffer.BlockCopy(buffer, 0, appendBytes, 0, receiveLength);
byte[] newTotalBytes = new byte[receiveLength + totalBytes.Length];
Buffer.BlockCopy(totalBytes, 0, newTotalBytes, 0, totalBytes.Length);
Buffer.BlockCopy(appendBytes, 0, newTotalBytes, totalBytes.Length, appendBytes.Length);
totalBytes = newTotalBytes;
}
} while (receiveLength > 0 && receiveLength == 1024);
Message = Encoding.Default.GetString(totalBytes);
return Message;
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
sokClient.Close();
}
}