BeginSend不立即返回

时间:2018-10-30 18:22:25

标签: c# sockets tcpclient

客户代码::

IDGSocketClient client = new IDGSocketClient();
client.Connect("127.0.0.1", 8888);
client.Send("dadsa" ); 

IDGSocketClient类

public void Connect(string ipAddress, int port)
{
    clientSocket.Connect(ipAddress, port);
}

public void Send(string data, int i)
{
    Console.Write("send called");
    Socket socket = clientSocket.Client;
    byte[] a =  { 1, 2 };
    socket.BeginSend(a, 0,1, 0, new AsyncCallback(SendCallback), null);
    Console.Write("Send Returned");
}
public void SendCallback(IAsyncResult ar)
{
    while (true) ;
}

服务器:

IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 8888);
serverSocket = new TcpListener(ipEndPoint);
serverSocket.Start();
TcpClient client = serverSocket.AcceptTcpClient();

现在,我希望BeginSend立即返回或至少在一段时间后返回,但这里不是这种情况。

输出

send called

输出不应为

send calledSend Returned

重新措辞: BeginSend是一种方法,根据文档,应在新线程中调用回调函数,调用该线程的线程将不会被阻塞(除非手动完成)。 就我而言,即使回调具有无限循环,该循环也应在另一个线程中执行,而在我看来,名为beginSend的线程应执行下一个Console.Write语句。

0 个答案:

没有答案