///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(); } }