110,551
社区成员
发帖
与我相关
我的任务
分享
const int PORT = 5566;
//Listen
Socket recver = new Socket(SocketType.Stream, ProtocolType.Tcp);
Socket comm = null;
recver.Bind(new IPEndPoint(IPAddress.Any, PORT));
recver.Listen(32);
recver.BeginAccept(ar => comm = recver.EndAccept(ar), null);
//Send
Socket sender = new Socket(SocketType.Stream, ProtocolType.Tcp);
sender.Connect(IPAddress.Loopback, PORT);
sender.Send(new byte[] { 1 });
sender.Send(new byte[] { 2 });
sender.Close();
//Receive
Thread.Sleep(1000); //Wait for connection
comm.BeginReceive(new byte[10], 0, 10, SocketFlags.None, ar => Console.WriteLine("Length: " + comm.EndReceive(ar)), null);
Thread.Sleep(1000); //Wait for receive
comm.Close();
recver.Close();
TcpClient c = new TcpClient();
c.Connect(IPAddress.Parse(ip), 8421);
c.Client.Send(ds1);
c.Client.Send(ds2);
c.Client.Shutdown(SocketShutdown.Both);
c.Client.Close();
c.Close();
服务器的beginrev是会执行2次的而不是合并....哪怕发送的只是0x01跟0x02 这个我测试过的