.NET可以从Linux TCP Raw Socket接收SYN_ACK吗?

时间:2011-11-09 08:11:41

标签: c# .net linux sockets tcp

我尝试在.NET中创建一个异步连接到Linux服务器的客户端。我在C#中创建的套接字上使用BeginConnect方法,我打算将SYN_ACK从服务器等待到服务器收到的相应SYN数据包。实际上,服务器上没有开放端口甚至是监听器,因为我使用嗅探器从客户端捕获SYN数据包。我制作自己的SYN_ACK数据包,再将其发送回客户端IP并成功传递到客户端的界面。但问题是,方法BeginConnect没有收到SYN_ACK并告诉套接字连接超时。这是我的代码段:

static void ConnectCallback(IAsyncResult ar) 
{
    try
    {
       // Retrieve the socket from the state object.
       Socket client = (Socket) ar.AsyncState;

       // Complete the connection.
       client.EndConnect(ar);

       Console.WriteLine("Socket connected to {0}",
       client.RemoteEndPoint.ToString());

       // Signal that the connection has been made.
       connectDone.Set();
     }
     catch (Exception e)
     {
       //Console.WriteLine(e.ToString());
     }
}
...
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
tcpClient.BeginConnect("1.2.3.4", intPort[0], new AsyncCallback(ConnectCallback), tcpClient);

0 个答案:

没有答案