我试了各种方法,不过至今都不行~下面那个是试验到现在的最可行的点的方法了,关键代码如下:
sock = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);sock.SendTo(bytee, bytee.Length, 0, ip);但是它一执行,它就一直报错:一个封锁操作被对 WSACancelBlockingCall 的调用中断。
请问这是为什么呢?如何才能把原始套接字发出去呢?谢谢了~项目催得很紧,麻烦帮忙吧~~~~
sock = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
sock.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);sock.SendTo(bytee, bytee.Length, 0, ip);但是它一执行,它就一直报错:一个封锁操作被对 WSACancelBlockingCall 的调用中断。
请问这是为什么呢?如何才能把原始套接字发出去呢?谢谢了~项目催得很紧,麻烦帮忙吧~~~~
解决方案 »
- 各位大神啊!请为小弟解决一个很棘手很诡异的问题吧!标题继续长。。。。。。。。。。。。。
- 一个关于dataGridView的问题....急!!!
- 这个Blend的帮助文档有地方下么?
- 深拷贝 与 浅拷贝 三步走 与君共享
- 如何调整Graphics.DrawString()输出的字符的字间距
- 设定模式窗体的大小(winform) 在线等...
- 窗口关闭的问题???
- 跪求:因为书写格式不规范,2个月的心血被列为垃圾代码,请问哪位绝顶高人,有没有好工具可以让代码自动规范呀???
- 如何让读写文件速度更快?
- 求指点
- C#里面怎样才能使一个写好的方法,在方法所在的窗体的生存期内,一直执行,好比是监控整个程序
- 取得一个网页中的某些内容
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
byte[] msg = Encoding.UTF8.GetBytes("This is a test");
byte[] bytes = new byte[256];
try
{
// Blocks until send returns.
int i = server.Send(msg);
Console.WriteLine("Sent {0} bytes.", i);
// Get reply from the server.
i = server.Receive(bytes);
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
return (e.ErrorCode);
}
return 0;
}
嗯,Connect了。另外,刚查到说是XP SP2都会发生这个错误的天呐~~~不会让我重装系统吧??~~~
运行程序前,启动ethereal,我做你类似的项目还要自己写模拟器收发自己程序的套接字消息呢
ethereal可以看到,并让你检查分析数据包的正确性QQ:47332677欢迎交流