static void Main01(string[] args) { HelloRequest req = new HelloRequest.Builder() .SetUser("JackieLee") .SetText("Hello") .Build(); byte[] buffer = req.ToByteArray(); HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:8080/"); ByteArrayContent content = new ByteArrayContent(buffer); content.Headers.Add("Content-Type", "application/octet-stream"); Stream respStream = client.PostAsync("mars/hello", content).Result.Content.ReadAsStreamAsync().Result; HelloResponse resp = HelloResponse.ParseFrom(respStream); }
public override void ChannelRead(IChannelHandlerContext context, object message) { var byteBuffer = message as IByteBuffer; msgXp.decode((Stream)byteBuffer); HelloResponse resp = HelloResponse.ParseFrom(msgXp.body); "resp decoded, resp.retcode={0}, resp.err={1}".Log(resp.Retcode, resp.Errmsg); context.WriteAsync(message); return; if (byteBuffer != null) { Console.WriteLine("Received from server: " + byteBuffer.ToString(Encoding.UTF8)); } context.WriteAsync(message); }
public int curPrefix = 0;//需要读取的数据总长度 public void ReceivedCallback(IAsyncResult ar) { try { StateObject so = (StateObject)ar.AsyncState; Socket client = so.workSocket; int readSize = client.EndReceive(ar); //结束读取,返回已读取的缓冲区里的字节数组长度 //将每次读取的数据,写入内存流里 receiveData.Write(so.buffer, 0, readSize); receiveData.Position = 0; NetMsgHeader msgXp = new NetMsgHeader(); msgXp.decode(receiveData); HelloResponse resp = HelloResponse.ParseFrom(msgXp.body); "Retcode:{0}".Log(resp.Retcode); if (resp.HasErrmsg) { resp.Errmsg.Log(); } } catch { } }