TCP数据包创建

时间:2009-12-15 09:05:54

标签: c# tcp

任何人都可以告诉我如何使用C#????

创建TCP数据包

4 个答案:

答案 0 :(得分:3)

看起来您正在寻找TCP Client课程。

查看MSDN并阅读System.Net.Sockets命名空间文档以获取更多信息。

答案 1 :(得分:2)

您不创建TCP数据包。 TCP呈现基于流的抽象;您可以从网络套接字读取和写入字节流。网络很可能在某些时候将这些作为数据包处理,这不是您需要在应用程序级别关注的事情。

如果您需要关注,可以使用GNU netcat等工具发送流量。

答案 2 :(得分:1)

我可以建议你去这个图书馆:http://www.eex-dev.net/fileadmin/user_upload/apidoc/NetworkLibrary/index.html吗?

以下是发送自定义TCP数据包的代码:

//Create a list for the interfaces
List<EthernetInterface> wpcInterfaces = new List<EthernetInterface>();

//Get all local interfaces
WinPcapInterface[] arWpc = EthernetInterface.GetAllPcapInterfaces(); 

//Create a router
Router rRouter = new Router();

//Foreach WinPcapInterface of this host
foreach (WinPcapInterface wpc in arWpc)
{
    //Create a new interface handler and start it
    EthernetInterface ipInterface = new EthernetInterface(wpc);
    ipInterface.Start();

    //Then add it to the router and to our list
    wpcInterfaces.Add(ipInterface);
    rRouter.AddInterface(ipInterface);
}

//Create a TCP frame
TCPFrame tcpFrame = new TCPFrame();
tcpFrame.DestinationPort = 80;
tcpFrame.SourcePort = 12345;
tcpFrame.AcknowledgementFlagSet = true;

//Create an IP frame and put the TCP frame into it
IPv4Frame ipFrame = new IPv4Frame();
ipFrame.DestinationAddress = IPAddress.Parse("192.168.0.1");
ipFrame.SourceAddress = IPAddress.Parse("192.168.1.254");

ipFrame.EncapsulatedFrame = tcpFrame;

//Send the frame
rRouter.PushTraffic(tcpFrame);

//Cleanup resources
rRouter.Cleanup();

//Start the cleanup process for all interfaces
foreach (EthernetInterface ipInterface in wpcInterfaces)
{
    ipInterface.Cleanup();
}

//Stop all handlers
rRouter.Stop();

//Stop all interfaces
foreach (EthernetInterface ipInterface in wpcInterfaces)
{
    ipInterface.Stop();
}

希望它有所帮助。 :)

答案 3 :(得分:0)

查看System.Net.Sockets命名空间。特别是在System.Net.Sockets.Socket班。