可以,networkstream是封装成了全双工的, 可以一边发一边收的。
的确可以,验证代码
class Program
{
static async Task Main(string[] args)
{
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var sae = new SocketAsyncEventArgs();
sae.RemoteEndPoint = new IPEndPoint(IPAddress.Loopback, 5678);
using (var mres = new ManualResetEventSlim())
{
sae.Completed += (s, e) => mres.Set();
if (socket.ConnectAsync(sae))
{
if (!mres.Wait(30))
{
throw new TimeoutException("Could not connect to " + sae.RemoteEndPoint);
}
}
}
var stream = new NetworkStream(socket);
ReadOnlyMemory<byte> buffer = Encoding.UTF8.GetBytes("Hello World!");
Console.WriteLine("Sending data...");
await stream.WriteAsync(buffer);
Memory<byte> readBuffer = new byte[1024];
await stream.ReadAsync(readBuffer);
Console.WriteLine("Recieved data: " + Encoding.UTF8.GetString(readBuffer.Span));
Console.Read();
socket.Close();
}
}
好像我记得可以,2年前弄个
可以。但注意不要并发操作。http慢原因之一就是因为 等待接收这个过程耗时,http 你就可以认为是客户端 写 读的过程(服务器端反之)。
……du总