////// 获取四位数的数字得到数据长度/// /// ///private int byte2Int(byte[] b){ return ((b[0] & 0xff) << 24) | ((b[1] & 0xff) << 16) | ((b[2] & 0xff) << 8) | (b[3] & 0xff);}/// /// 把数据长度转换为二进制/// /// ///private byte[] int2Byte(int a){ byte[] b = new byte[4]; b[0] = (byte)(a >> 24); b[1] = (byte)(a >> 16); b[2] = (byte)(a >> 8); b[3] = (byte)(a); return b;}/// /// 读取Socket的数据/// /// /// ///private void readSocketData(String ip,int port,String requestData){ try { IPAddress ipAddress = IPAddress.Parse(ip); Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.ReceiveTimeout = 5000; clientSocket.SendTimeout = 5000; clientSocket.Connect(new IPEndPoint(ipAddress, port)); Task readRes = Task.Factory.StartNew (() => { byte[] result = new byte[40960]; clientSocket.Receive(result); int receiveLength = byte2Int(result); String response = Encoding.UTF8.GetString(result, headLength, receiveLength); return response; }); byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(requestData); int length = byteArray.Length; byte[] lenBytes = int2Byte(length); byte[] newBytes = new byte[lenBytes.Length + length]; lenBytes.CopyTo(newBytes, 0); byteArray.CopyTo(newBytes, lenBytes.Length); clientSocket.Send(newBytes); string resultStr = readRes.Result; MessageBox.Show(resultStr, "Socket Result", MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) { MessageBox.Show("Socket connect fail.\r\n" + ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { this.btn_submit.Enabled = true; }}