晚上为什么听见奇怪的声音?有小孩哭声,大人的聊天声,但是一般都在晚上十点左右,睁开眼又什么都没有 如何在家赚钱

\u7528C#\u7f16\u5199\u5173\u4e8e\u67e5\u770b\u7f51\u7edc\u6d41\u91cf\u7b49\u529f\u80fd\u7684\u5fc5\u5907\u77e5\u8bc6\u3002\uff08\u8bf7\u8be6\u7ec6\u8bf4\u660e\uff09

\u4f60\u53ef\u4ee5\u5148\u4e86\u89e3\u4e0bP2P\u7684\u5177\u4f53\u8d44\u6599\uff0c\u300aC#\u7f51\u7edc\u7f16\u7a0b\u5b9e\u4f8b\u6559\u7a0b\u300b \u8fd9\u672c\u4e66\u4e0a\u8bf4\u7684\u662f\u7f51\u7edc\u534f\u8bae\u65b9\u9762\u7684\u5f00\u53d1

\u4e0b\u9762\u662f\u6211\u5728\u7f51\u4e0a\u627e\u7684\u4e00\u5199P2P\u5f00\u53d1\u7684\u8d44\u6599\u4f60\u770b\u4e0b

\u7528C#\u7684Raw Socket\u5b9e\u73b0\u7f51\u7edc\u5c01\u5305\u76d1\u89c6 \u53ef\u7528\u4e8eP2P\u7f16\u7a0b
\u8c08\u8d77socket\u7f16\u7a0b\uff0c\u5927\u5bb6\u4e5f\u8bb8\u4f1a\u60f3\u8d77QQ\u548cIE\uff0c\u6ca1\u9519\u3002\u8fd8\u6709\u8bb8\u591a\u7f51\u7edc\u5de5\u5177\u5982P2P\u3001NetMeeting\u7b49\u5728\u5e94\u7528\u5c42\u5b9e\u73b0\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u4e5f\u662f\u7528socket\u6765\u5b9e\u73b0\u7684\u3002Socket\u662f\u4e00\u4e2a\u7f51\u7edc\u7f16\u7a0b\u63a5\u53e3\uff0c\u5b9e\u73b0\u4e8e\u7f51\u7edc\u5e94\u7528\u5c42\uff0cWindows Socket\u5305\u62ec\u4e86\u4e00\u5957\u7cfb\u7edf\u7ec4\u4ef6\uff0c\u5145\u5206\u5229\u7528\u4e86Microsoft Windows \u6d88\u606f\u9a71\u52a8\u7684\u7279\u70b9\u3002Socket\u89c4\u83031.1\u7248\u662f\u57281993\u5e741\u6708\u53d1\u884c\u7684\uff0c\u5e76\u5e7f\u6cdb\u7528\u4e8e\u6b64\u540e\u51fa\u73b0\u7684Windows9x\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u3002Socket\u89c4\u83032.2\u7248\uff08\u5176\u5728Windows\u5e73\u53f0\u4e0a\u7684\u7248\u672c\u662fWinsock2.2\uff0c\u4e5f\u53ebWinsock2\uff09\u5728 1996 \u5e74 5 \u6708\u53d1\u884c\uff0cWindows NT 5.0\u53ca\u4ee5\u540e\u7248\u672c\u7684Windows\u7cfb\u7edf\u652f\u6301Winsock2\uff0c\u5728Winsock2\u4e2d\uff0c\u652f\u6301\u591a\u4e2a\u4f20\u8f93\u534f\u8bae\u7684\u539f\u59cb\u5957\u63a5\u5b57\uff0c\u91cd\u53e0I/O\u6a21\u578b\u3001\u670d\u52a1\u8d28\u91cf\u63a7\u5236\u7b49\u3002

\u672c\u6587\u5411\u5927\u5bb6\u4ecb\u7ecdWindows Sockets\u7684\u4e00\u4e9b\u5173\u4e8e\u7528C#\u5b9e\u73b0\u7684\u539f\u59cb\u5957\u63a5\u5b57(Raw Socket)\u7684\u7f16\u7a0b\uff0c\u4ee5\u53ca\u5728\u6b64\u57fa\u7840\u4e0a\u5b9e\u73b0\u7684\u7f51\u7edc\u5c01\u5305\u76d1\u89c6\u6280\u672f\u3002\u540cWinsock1\u76f8\u6bd4\uff0cWinsock2\u6700\u660e\u663e\u7684\u5c31\u662f\u652f\u6301\u4e86Raw Socket\u5957\u63a5\u5b57\u7c7b\u578b\uff0c\u4f7f\u7528Raw Socket\uff0c\u53ef\u628a\u7f51\u5361\u8bbe\u7f6e\u6210\u6df7\u6742\u6a21\u5f0f\uff0c\u5728\u8fd9\u79cd\u6a21\u5f0f\u4e0b\uff0c\u6211\u4eec\u53ef\u4ee5\u6536\u5230\u7f51\u7edc\u4e0a\u7684IP\u5305\uff0c\u5f53\u7136\u5305\u62ec\u76ee\u7684\u4e0d\u662f\u672c\u673a\u7684IP\u5305\uff0c\u901a\u8fc7\u539f\u59cb\u5957\u63a5\u5b57\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u66f4\u52a0\u81ea\u5982\u5730\u63a7\u5236Windows\u4e0b\u7684\u591a\u79cd\u534f\u8bae\uff0c\u800c\u4e14\u80fd\u591f\u5bf9\u7f51\u7edc\u5e95\u5c42\u7684\u4f20\u8f93\u673a\u5236\u8fdb\u884c\u63a7\u5236\u3002

\u5728\u672c\u6587\u4f8b\u5b50\u4e2d\uff0c\u6211\u5728nbyte.BasicClass\u547d\u540d\u7a7a\u95f4\u5b9e\u73b0\u4e86RawSocket\u7c7b\uff0c\u5b83\u5305\u542b\u4e86\u6211\u4eec\u5b9e\u73b0\u6570\u636e\u5305\u76d1\u89c6\u7684\u6838\u5fc3\u6280\u672f\u3002\u5728\u5b9e\u73b0\u8fd9\u4e2a\u7c7b\u4e4b\u524d\uff0c\u9700\u8981\u5148\u5199\u4e00\u4e2aIP\u5934\u7ed3\u6784\uff0c\u6765\u6682\u65f6\u5b58\u653e\u4e00\u4e9b\u6709\u5173\u7f51\u7edc\u5c01\u5305\u7684\u4fe1\u606f\uff1a

[StructLayout(LayoutKind.Explicit)]
public struct IPHeader
{
[FieldOffset(0)] public byte ip_verlen; //I4\u4f4d\u9996\u90e8\u957f\u5ea6+4\u4f4dIP\u7248\u672c\u53f7
[FieldOffset(1)] public byte ip_tos; //8\u4f4d\u670d\u52a1\u7c7b\u578bTOS
[FieldOffset(2)] public ushort ip_totallength; //16\u4f4d\u6570\u636e\u5305\u603b\u957f\u5ea6\uff08\u5b57\u8282\uff09
[FieldOffset(4)] public ushort ip_id; //16\u4f4d\u6807\u8bc6
[FieldOffset(6)] public ushort ip_offset; //3\u4f4d\u6807\u5fd7\u4f4d
[FieldOffset(8)] public byte ip_ttl; //8\u4f4d\u751f\u5b58\u65f6\u95f4 TTL
[FieldOffset(9)] public byte ip_protocol; //8\u4f4d\u534f\u8bae(TCP, UDP, ICMP, Etc.)
[FieldOffset(10)] public ushort ip_checksum; //16\u4f4dIP\u9996\u90e8\u6821\u9a8c\u548c
[FieldOffset(12)] public uint ip_srcaddr; //32\u4f4d\u6e90IP\u5730\u5740
[FieldOffset(16)] public uint ip_destaddr; //32\u4f4d\u76ee\u7684IP\u5730\u5740
}

\u8fd9\u6837\uff0c\u5f53\u6bcf\u4e00\u4e2a\u5c01\u5305\u5230\u8fbe\u65f6\u5019\uff0c\u53ef\u4ee5\u7528\u5f3a\u5236\u7c7b\u578b\u8f6c\u5316\u628a\u5305\u4e2d\u7684\u6570\u636e\u6d41\u8f6c\u5316\u4e3a\u4e00\u4e2a\u4e2aIPHeader\u5bf9\u8c61\u3002

\u4e0b\u9762\u5c31\u5f00\u59cb\u5199RawSocket\u7c7b\u4e86\uff0c\u4e00\u5f00\u59cb\uff0c\u5148\u5b9a\u4e49\u51e0\u4e2a\u53c2\u6570\uff0c\u5305\u62ec\uff1a

private bool error_occurred; //\u5957\u63a5\u5b57\u5728\u63a5\u6536\u5305\u65f6\u662f\u5426\u4ea7\u751f\u9519\u8bef
public bool KeepRunning; //\u662f\u5426\u7ee7\u7eed\u8fdb\u884c
private static int len_receive_buf; //\u5f97\u5230\u7684\u6570\u636e\u6d41\u7684\u957f\u5ea6
byte [] receive_buf_bytes; //\u6536\u5230\u7684\u5b57\u8282
private Socket socket = null; //\u58f0\u660e\u5957\u63a5\u5b57

\u8fd8\u6709\u4e00\u4e2a\u5e38\u91cf\uff1a

const int SIO_RCVALL = unchecked((int)0x98000001);//\u76d1\u542c\u6240\u6709\u7684\u6570\u636e\u5305

\u8fd9\u91cc\u7684SIO_RCVALL\u662f\u6307\u793aRawSocket\u63a5\u6536\u6240\u6709\u7684\u6570\u636e\u5305\uff0c\u5728\u4ee5\u540e\u7684IOContrl\u51fd\u6570\u4e2d\u8981\u7528\uff0c\u5728\u4e0b\u9762\u7684\u6784\u9020\u51fd\u6570\u4e2d\uff0c\u5b9e\u73b0\u4e86\u5bf9\u4e00\u4e9b\u53d8\u91cf\u53c2\u6570\u7684\u521d\u59cb\u5316\uff1a

public RawSocket() //\u6784\u9020\u51fd\u6570
{
error_occurred=false;
len_receive_buf = 4096;
receive_buf_bytes = new byte[len_receive_buf];
}


\u4e0b\u9762\u7684\u51fd\u6570\u5b9e\u73b0\u4e86\u521b\u5efaRawSocket\uff0c\u5e76\u628a\u5b83\u4e0e\u7ec8\u7ed3\u70b9\uff08IPEndPoint\uff1a\u672c\u673aIP\u548c\u7aef\u53e3\uff09\u7ed1\u5b9a\uff1a

public void CreateAndBindSocket(string IP) //\u5efa\u7acb\u5e76\u7ed1\u5b9a\u5957\u63a5\u5b57
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
socket.Blocking = false; //\u7f6esocket\u975e\u963b\u585e\u72b6\u6001
socket.Bind(new IPEndPoint(IPAddress.Parse(IP), 0)); //\u7ed1\u5b9a\u5957\u63a5\u5b57

if (SetSocketOption()==false) error_occurred=true;
}


\u5176\u4e2d\uff0c\u5728\u521b\u5efa\u5957\u63a5\u5b57\u7684\u4e00\u53e5socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);\u4e2d\u67093\u4e2a\u53c2\u6570\uff1a

\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f\u8bbe\u5b9a\u5730\u5740\u65cf\uff0cMSDN\u4e0a\u7684\u63cf\u8ff0\u662f\u201c\u6307\u5b9a Socket \u5b9e\u4f8b\u7528\u6765\u89e3\u6790\u5730\u5740\u7684\u5bfb\u5740\u65b9\u6848\u201d\uff0c\u5f53\u8981\u628a\u5957\u63a5\u5b57\u7ed1\u5b9a\u5230\u7ec8\u7ed3\u70b9\uff08IPEndPoint\uff09\u65f6\uff0c\u9700\u8981\u4f7f\u7528InterNetwork\u6210\u5458\uff0c\u5373\u91c7\u7528IP\u7248\u672c4\u7684\u5730\u5740\u683c\u5f0f\uff0c\u8fd9\u4e5f\u662f\u5f53\u4eca\u5927\u591a\u6570\u5957\u63a5\u5b57\u7f16\u7a0b\u6240\u91c7\u7528\u4e00\u4e2a\u5bfb\u5740\u65b9\u6848\uff08AddressFamily\uff09\u3002

\u7b2c\u4e8c\u4e2a\u53c2\u6570\u8bbe\u7f6e\u7684\u5957\u63a5\u5b57\u7c7b\u578b\u5c31\u662f\u6211\u4eec\u4f7f\u7528\u7684Raw\u7c7b\u578b\u4e86\uff0cSocketType\u662f\u4e00\u4e2a\u679a\u4e3e\u6570\u636e\u7c7b\u578b\uff0cRaw\u5957\u63a5\u5b57\u7c7b\u578b\u652f\u6301\u5bf9\u57fa\u7840\u4f20\u8f93\u534f\u8bae\u7684\u8bbf\u95ee\u3002\u901a\u8fc7\u4f7f\u7528 SocketType.Raw\uff0c\u4f60\u4e0d\u5149\u53ef\u4ee5\u4f7f\u7528\u4f20\u8f93\u63a7\u5236\u534f\u8bae(Tcp)\u548c\u7528\u6237\u6570\u636e\u62a5\u534f\u8bae(Udp)\u8fdb\u884c\u901a\u4fe1\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u7f51\u9645\u6d88\u606f\u63a7\u5236\u534f\u8bae (Icmp) \u548c Internet \u7ec4\u7ba1\u7406\u534f\u8bae (Igmp) \u6765\u8fdb\u884c\u901a\u4fe1\u3002\u5728\u53d1\u9001\u65f6\uff0c\u60a8\u7684\u5e94\u7528\u7a0b\u5e8f\u5fc5\u987b\u63d0\u4f9b\u5b8c\u6574\u7684 IP \u6807\u5934\u3002\u6240\u63a5\u6536\u7684\u6570\u636e\u62a5\u5728\u8fd4\u56de\u65f6\u4f1a\u4fdd\u6301\u5176 IP \u6807\u5934\u548c\u9009\u9879\u4e0d\u53d8\u3002

\u7b2c\u4e09\u4e2a\u53c2\u6570\u8bbe\u7f6e\u534f\u8bae\u7c7b\u578b\uff0cSocket \u7c7b\u4f7f\u7528 ProtocolType \u679a\u4e3e\u6570\u636e\u7c7b\u578b\u5411 Windows Socket API \u901a\u77e5\u6240\u8bf7\u6c42\u7684\u534f\u8bae\u3002\u8fd9\u91cc\u4f7f\u7528\u7684\u662fIP\u534f\u8bae\uff0c\u6240\u4ee5\u8981\u91c7\u7528ProtocolType.IP\u53c2\u6570\u3002

\u5728CreateAndBindSocket\u51fd\u6570\u4e2d\u6709\u4e00\u4e2a\u81ea\u5b9a\u4e49\u7684SetSocketOption\u51fd\u6570\uff0c\u5b83\u548cSocket\u7c7b\u4e2d\u7684SetSocketOption\u4e0d\u540c\uff0c\u6211\u4eec\u5728\u8fd9\u91cc\u5b9a\u4e49\u7684\u662f\u5177\u6709IO\u63a7\u5236\u529f\u80fd\u7684SetSocketOption\uff0c\u5b83\u7684\u5b9a\u4e49\u5982\u4e0b\uff1a

private bool SetSocketOption() //\u8bbe\u7f6eraw socket
{
bool ret_value = true;
try
{
socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
byte []IN = new byte[4]{1, 0, 0, 0};
byte []OUT = new byte[4];

//\u4f4e\u7ea7\u522b\u64cd\u4f5c\u6a21\u5f0f,\u63a5\u53d7\u6240\u6709\u7684\u6570\u636e\u5305\uff0c\u8fd9\u4e00\u6b65\u662f\u5173\u952e\uff0c\u5fc5\u987b\u628asocket\u8bbe\u6210raw\u548cIP Level\u624d\u53ef\u7528SIO_RCVALL
int ret_code = socket.IOControl(SIO_RCVALL, IN, OUT);
ret_code = OUT[0] + OUT[1] + OUT[2] + OUT[3];//\u628a4\u4e2a8\u4f4d\u5b57\u8282\u5408\u6210\u4e00\u4e2a32\u4f4d\u6574\u6570
if(ret_code != 0) ret_value = false;
}
catch(SocketException)
{
ret_value = false;
}
return ret_value;
}

\u5176\u4e2d\uff0c\u8bbe\u7f6e\u5957\u63a5\u5b57\u9009\u9879\u65f6\u5fc5\u987b\u4f7f\u5957\u63a5\u5b57\u5305\u542bIP\u5305\u5934\uff0c\u5426\u5219\u65e0\u6cd5\u586b\u5145IPHeader\u7ed3\u6784\uff0c\u4e5f\u65e0\u6cd5\u83b7\u5f97\u6570\u636e\u5305\u4fe1\u606f\u3002

int ret_code = socket.IOControl(SIO_RCVALL, IN, OUT);\u662f\u51fd\u6570\u4e2d\u6700\u5173\u952e\u7684\u4e00\u6b65\u4e86\uff0c\u56e0\u4e3a\uff0c\u5728windows\u4e2d\u6211\u4eec\u4e0d\u80fd\u7528Receive\u51fd\u6570\u6765\u63a5\u6536raw socket\u4e0a\u7684\u6570\u636e\uff0c\u8fd9\u662f\u56e0\u4e3a\uff0c\u6240\u6709\u7684IP\u5305\u90fd\u662f\u5148\u9012\u4ea4\u7ed9\u7cfb\u7edf\u6838\u5fc3\uff0c\u7136\u540e\u518d\u4f20\u8f93\u5230\u7528\u6237\u7a0b\u5e8f\uff0c\u5f53\u53d1\u9001\u4e00\u4e2araws socket\u5305\u7684\u65f6\u5019\uff08\u6bd4\u5982syn\uff09\uff0c\u6838\u5fc3\u5e76\u4e0d\u77e5\u9053\uff0c\u4e5f\u6ca1\u6709\u8fd9\u4e2a\u6570\u636e\u88ab\u53d1\u9001\u6216\u8005\u8fde\u63a5\u5efa\u7acb\u7684\u8bb0\u5f55\uff0c\u56e0\u6b64\uff0c\u5f53\u8fdc\u7aef\u4e3b\u673a\u56de\u5e94\u7684\u65f6\u5019\uff0c\u7cfb\u7edf\u6838\u5fc3\u5c31\u628a\u8fd9\u4e9b\u5305\u90fd\u5168\u90e8\u4e22\u6389\uff0c\u4ece\u800c\u5230\u4e0d\u4e86\u5e94\u7528\u7a0b\u5e8f\u4e0a\u3002\u6240\u4ee5\uff0c\u5c31\u4e0d\u80fd\u7b80\u5355\u5730\u4f7f\u7528\u63a5\u6536\u51fd\u6570\u6765\u63a5\u6536\u8fd9\u4e9b\u6570\u636e\u62a5\u3002\u8981\u8fbe\u5230\u63a5\u6536\u6570\u636e\u7684\u76ee\u7684\uff0c\u5c31\u5fc5\u987b\u91c7\u7528\u55c5\u63a2\uff0c\u63a5\u6536\u6240\u6709\u901a\u8fc7\u7684\u6570\u636e\u5305\uff0c\u7136\u540e\u8fdb\u884c\u7b5b\u9009\uff0c\u7559\u4e0b\u7b26\u5408\u6211\u4eec\u9700\u8981\u7684\u3002\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6eSIO_RCVALL\uff0c\u8868\u793a\u63a5\u6536\u6240\u6709\u7f51\u7edc\u4e0a\u7684\u6570\u636e\u5305\u3002\u63a5\u4e0b\u6765\u4ecb\u7ecd\u4e00\u4e0bIOControl\u51fd\u6570\u3002MSDN\u89e3\u91ca\u5b83\u8bf4\u662f\u8bbe\u7f6e\u5957\u63a5\u5b57\u4e3a\u4f4e\u7ea7\u522b\u64cd\u4f5c\u6a21\u5f0f\uff0c\u600e\u4e48\u4f4e\u7ea7\u522b\u64cd\u4f5c\u6cd5\uff1f\u5176\u5b9e\u8fd9\u4e2a\u51fd\u6570\u4e0eAPI\u4e2d\u7684WSAIoctl\u51fd\u6570\u5f88\u76f8\u4f3c\u3002WSAIoctl\u51fd\u6570\u5b9a\u4e49\u5982\u4e0b\uff1a

int WSAIoctl(
SOCKET s, //\u4e00\u4e2a\u6307\u5b9a\u7684\u5957\u63a5\u5b57
DWORD dwIoControlCode, //\u63a7\u5236\u64cd\u4f5c\u7801
LPVOID lpvInBuffer, //\u6307\u5411\u8f93\u5165\u6570\u636e\u6d41\u7684\u6307\u9488
DWORD cbInBuffer, //\u8f93\u5165\u6570\u636e\u6d41\u7684\u5927\u5c0f\uff08\u5b57\u8282\u6570\uff09
LPVOID lpvOutBuffer, // \u6307\u5411\u8f93\u51fa\u6570\u636e\u6d41\u7684\u6307\u9488
DWORD cbOutBuffer, //\u8f93\u51fa\u6570\u636e\u6d41\u7684\u5927\u5c0f\uff08\u5b57\u8282\u6570\uff09
LPDWORD lpcbBytesReturned, //\u6307\u5411\u8f93\u51fa\u5b57\u8282\u6d41\u6570\u76ee\u7684\u5b9e\u6570\u503c
LPWSAOVERLAPPED lpOverlapped, //\u6307\u5411\u4e00\u4e2aWSAOVERLAPPED\u7ed3\u6784
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine//\u6307\u5411\u64cd\u4f5c\u5b8c\u6210\u65f6\u6267\u884c\u7684\u4f8b\u7a0b
);

C#\u7684IOControl\u51fd\u6570\u4e0d\u50cfWSAIoctl\u51fd\u6570\u90a3\u4e48\u590d\u6742\uff0c\u5176\u4e2d\u53ea\u5305\u62ec\u5176\u4e2d\u7684\u63a7\u5236\u64cd\u4f5c\u7801\u3001\u8f93\u5165\u5b57\u8282\u6d41\u3001\u8f93\u51fa\u5b57\u8282\u6d41\u4e09\u4e2a\u53c2\u6570\uff0c\u4e0d\u8fc7\u8fd9\u4e09\u4e2a\u53c2\u6570\u5df2\u7ecf\u8db3\u591f\u4e86\u3002\u6211\u4eec\u770b\u5230\u51fd\u6570\u4e2d\u5b9a\u4e49\u4e86\u4e00\u4e2a\u5b57\u8282\u6570\u7ec4\uff1abyte []IN = new byte[4]{1, 0, 0, 0}\u5b9e\u9645\u4e0a\u5b83\u662f\u4e00\u4e2a\u503c\u4e3a1\u7684DWORD\u6216\u662fInt32\uff0c\u540c\u6837byte []OUT = new byte[4];\u4e5f\u662f\uff0c\u5b83\u6574\u548c\u4e86\u4e00\u4e2aint,\u4f5c\u4e3aWSAIoctl\u51fd\u6570\u4e2d\u53c2\u6570lpcbBytesReturned\u6307\u5411\u7684\u503c\u3002

\u56e0\u4e3a\u8bbe\u7f6e\u5957\u63a5\u5b57\u9009\u9879\u65f6\u53ef\u80fd\u4f1a\u53d1\u751f\u9519\u8bef\uff0c\u9700\u8981\u7528\u4e00\u4e2a\u503c\u4f20\u9012\u9519\u8bef\u6807\u5fd7\uff1a

public bool ErrorOccurred
{
get
{
return error_occurred;
}
}

\u4e0b\u9762\u7684\u51fd\u6570\u5b9e\u73b0\u7684\u6570\u636e\u5305\u7684\u63a5\u6536\uff1a

//\u89e3\u6790\u63a5\u6536\u7684\u6570\u636e\u5305\uff0c\u5f62\u6210PacketArrivedEventArgs\u4e8b\u4ef6\u6570\u636e\u7c7b\u5bf9\u8c61\uff0c\u5e76\u5f15\u53d1PacketArrival\u4e8b\u4ef6
unsafe private void Receive(byte [] buf, int len)
{
byte temp_protocol=0;
uint temp_version=0;
uint temp_ip_srcaddr=0;
uint temp_ip_destaddr=0;
short temp_srcport=0;
short temp_dstport=0;
IPAddress temp_ip;

PacketArrivedEventArgs e=new PacketArrivedEventArgs();//\u65b0\u7f51\u7edc\u6570\u636e\u5305\u4fe1\u606f\u4e8b\u4ef6

fixed(byte *fixed_buf = buf)
{
IPHeader * head = (IPHeader *) fixed_buf;//\u628a\u6570\u636e\u6d41\u6574\u548c\u4e3aIPHeader\u7ed3\u6784
e.HeaderLength=(uint)(head->ip_verlen & 0x0F) << 2;

temp_protocol = head->ip_protocol;
switch(temp_protocol)//\u63d0\u53d6\u534f\u8bae\u7c7b\u578b
{
case 1: e.Protocol="ICMP"; break;
case 2: e.Protocol="IGMP"; break;
case 6: e.Protocol="TCP"; break;
case 17: e.Protocol="UDP"; break;
default: e.Protocol= "UNKNOWN"; break;
}

temp_version =(uint)(head->ip_verlen & 0xF0) >> 4;//\u63d0\u53d6IP\u534f\u8bae\u7248\u672c
e.IPVersion = temp_version.ToString();

//\u4ee5\u4e0b\u8bed\u53e5\u63d0\u53d6\u51fa\u4e86PacketArrivedEventArgs\u5bf9\u8c61\u4e2d\u7684\u5176\u4ed6\u53c2\u6570
temp_ip_srcaddr = head->ip_srcaddr;
temp_ip_destaddr = head->ip_destaddr;
temp_ip = new IPAddress(temp_ip_srcaddr);
e.OriginationAddress =temp_ip.ToString();
temp_ip = new IPAddress(temp_ip_destaddr);
e.DestinationAddress = temp_ip.ToString();

temp_srcport = *(short *)&fixed_buf[e.HeaderLength];
temp_dstport = *(short *)&fixed_buf[e.HeaderLength+2];
e.OriginationPort=IPAddress.NetworkToHostOrder(temp_srcport).ToString();
e.DestinationPort=IPAddress.NetworkToHostOrder(temp_dstport).ToString();

e.PacketLength =(uint)len;
e.MessageLength =(uint)len - e.HeaderLength;

e.ReceiveBuffer=buf;
//\u628abuf\u4e2d\u7684IP\u5934\u8d4b\u7ed9PacketArrivedEventArgs\u4e2d\u7684IPHeaderBuffer
Array.Copy(buf,0,e.IPHeaderBuffer,0,(int)e.HeaderLength);
//\u628abuf\u4e2d\u7684\u5305\u4e2d\u5185\u5bb9\u8d4b\u7ed9PacketArrivedEventArgs\u4e2d\u7684MessageBuffer
Array.Copy(buf,(int)e.HeaderLength,e.MessageBuffer,0,(int)e.MessageLength);
}
//\u5f15\u53d1PacketArrival\u4e8b\u4ef6
OnPacketArrival(e);
}

\u5927\u5bb6\u6ce8\u610f\u5230\u4e86\uff0c\u5728\u4e0a\u9762\u7684\u51fd\u6570\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u4e86\u6307\u9488\u8fd9\u79cd\u6240\u8c13\u7684\u4e0d\u5b89\u5168\u4ee3\u7801\uff0c\u53ef\u89c1\u5728C#\u4e2d\u6307\u9488\u548c\u79fb\u4f4d\u8fd0\u7b97\u8fd9\u4e9b\u539f\u59cb\u64cd\u4f5c\u4e5f\u53ef\u4ee5\u7ed9\u7a0b\u5e8f\u5458\u5e26\u6765\u7f16\u7a0b\u4e0a\u7684\u4fbf\u5229\u3002\u5728\u51fd\u6570\u4e2d\u58f0\u660ePacketArrivedEventArgs\u7c7b\u5bf9\u8c61\uff0c\u4ee5\u4fbf\u901a\u8fc7OnPacketArrival(e)\u51fd\u6570\u901a\u8fc7\u4e8b\u4ef6\u628a\u6570\u636e\u5305\u4fe1\u606f\u4f20\u9012\u51fa\u53bb\u3002\u5176\u4e2dPacketArrivedEventArgs\u7c7b\u662fRawSocket\u7c7b\u4e2d\u7684\u5d4c\u5957\u7c7b\uff0c\u5b83\u7ee7\u627f\u4e86\u7cfb\u7edf\u4e8b\u4ef6\uff08Event\uff09\u7c7b\uff0c\u5c01\u88c5\u4e86\u6570\u636e\u5305\u7684IP\u3001\u7aef\u53e3\u3001\u534f\u8bae\u7b49\u5176\u4ed6\u6570\u636e\u5305\u5934\u4e2d\u5305\u542b\u7684\u4fe1\u606f\u3002\u5728\u542f\u52a8\u63a5\u6536\u6570\u636e\u5305\u7684\u51fd\u6570\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528\u4e86\u5f02\u6b65\u64cd\u4f5c\u7684\u65b9\u6cd5\uff0c\u4ee5\u4e0b\u51fd\u6570\u5f00\u542f\u4e86\u5f02\u6b65\u76d1\u542c\u7684\u63a5\u53e3\uff1a

public void Run() //\u5f00\u59cb\u76d1\u542c
{
IAsyncResult ar = socket.BeginReceive(receive_buf_bytes, 0, len_receive_buf, SocketFlags.None, new AsyncCallback(CallReceive), this);
}

Socket.BeginReceive\u51fd\u6570\u8fd4\u56de\u4e86\u4e00\u4e2a\u5f02\u6b65\u64cd\u4f5c\u7684\u63a5\u53e3\uff0c\u5e76\u5728\u6b64\u63a5\u53e3\u7684\u751f\u6210\u51fd\u6570BeginReceive\u4e2d\u58f0\u660e\u4e86\u5f02\u6b65\u56de\u8c03\u51fd\u6570CallReceive\uff0c\u5e76\u628a\u63a5\u6536\u5230\u7684\u7f51\u7edc\u6570\u636e\u6d41\u4f20\u7ed9receive_buf_bytes\uff0c\u8fd9\u6837\u5c31\u53ef\u7528\u4e00\u4e2a\u5e26\u6709\u5f02\u6b65\u64cd\u4f5c\u7684\u63a5\u53e3\u53c2\u6570\u7684\u5f02\u6b65\u56de\u8c03\u51fd\u6570\u4e0d\u65ad\u5730\u63a5\u6536\u6570\u636e\u5305\uff1a

private void CallReceive(IAsyncResult ar)//\u5f02\u6b65\u56de\u8c03
{
int received_bytes;
received_bytes = socket.EndReceive(ar);
Receive(receive_buf_bytes, received_bytes);
if (KeepRunning) Run();
}

\u6b64\u51fd\u6570\u5f53\u6302\u8d77\u6216\u7ed3\u675f\u5f02\u6b65\u8bfb\u53d6\u540e\u53bb\u63a5\u6536\u4e00\u4e2a\u65b0\u7684\u6570\u636e\u5305\uff0c\u8fd9\u6837\u80fd\u4fdd\u8bc1\u8ba9\u6bcf\u4e00\u4e2a\u6570\u636e\u5305\u90fd\u80fd\u591f\u88ab\u7a0b\u5e8f\u63a2\u6d4b\u5230\u3002

\u4e0b\u9762\u901a\u8fc7\u58f0\u660e\u4ee3\u7406\u4e8b\u4ef6\u53e5\u67c4\u6765\u5b9e\u73b0\u548c\u5916\u754c\u7684\u901a\u4fe1\uff1a

public delegate void PacketArrivedEventHandler(Object sender, PacketArrivedEventArgs args);
//\u4e8b\u4ef6\u53e5\u67c4\uff1a\u5305\u5230\u8fbe\u65f6\u5f15\u53d1\u4e8b\u4ef6
public event PacketArrivedEventHandler PacketArrival;//\u58f0\u660e\u65f6\u95f4\u53e5\u67c4\u51fd\u6570

\u8fd9\u6837\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u6570\u636e\u5305\u4fe1\u606f\u7684\u83b7\u53d6\uff0c\u91c7\u7528\u5f02\u6b65\u56de\u8c03\u51fd\u6570\uff0c\u53ef\u4ee5\u63d0\u9ad8\u63a5\u6536\u6570\u636e\u5305\u7684\u6548\u7387\uff0c\u5e76\u901a\u8fc7\u4ee3\u7406\u4e8b\u4ef6\u628a\u5c01\u5305\u4fe1\u606f\u4f20\u9012\u5230\u5916\u754c\u3002\u65e2\u7136\u80fd\u628a\u6240\u6709\u7684\u5c01\u5305\u4fe1\u606f\u4f20\u9012\u51fa\u53bb\uff0c\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5bf9\u6570\u636e\u5305\u7684\u5206\u6790\u4e86\uff1a\uff09\u4e0d\u8fc7RawSocket\u7684\u4efb\u52a1\u8fd8\u6ca1\u6709\u5b8c\uff0c\u6700\u540e\u4e0d\u8981\u671b\u4e86\u5173\u95ed\u5957\u63a5\u5b57\u554a\uff1a

public void Shutdown() //\u5173\u95edraw socket
{
if(socket != null)
{
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
}

\u4ee5\u4e0a\u4ecb\u7ecd\u4e86RawSocket\u7c7b\u901a\u8fc7\u6784\u9020IP\u5934\u83b7\u53d6\u4e86\u5305\u4e2d\u7684\u4fe1\u606f\uff0c\u5e76\u901a\u8fc7\u5f02\u6b65\u56de\u8c03\u51fd\u6570\u5b9e\u73b0\u4e86\u6570\u636e\u5305\u7684\u63a5\u6536\uff0c\u5e76\u4f7f\u7528\u65f6\u95f4\u4ee3\u7406\u53e5\u67c4\u548c\u81ea\u5b9a\u4e49\u7684\u6570\u636e\u5305\u4fe1\u606f\u4e8b\u4ef6\u7c7b\u628a\u6570\u636e\u5305\u4fe1\u606f\u53d1\u9001\u51fa\u53bb\uff0c\u4ece\u800c\u5b9e\u73b0\u4e86\u7f51\u7edc\u6570\u636e\u5305\u7684\u76d1\u89c6\uff0c\u8fd9\u6837\u6211\u4eec\u5c31\u53ef\u4ee5\u5728\u5916\u90e8\u6dfb\u52a0\u4e00\u4e9b\u51fd\u6570\u5bf9\u6570\u636e\u5305\u8fdb\u884c\u5206\u6790\u4e86\u3002

get\u5fc5\u5907\u751f\u6d3b\u5e38\u8bc6

这是幻听的状态,人类有幻觉空间,这主要是语言世界,还有幻境空间,主要是视觉世界。这和人的自然习惯有关系,外在的因素,使人的自然习惯扭曲变形,出现了变异的现象。这本来只是风声鹤鸣,不算怪异,但空气中存在的无线电波,使幻觉更加明显。无线电波是零度以下的声音,当人的听觉或者视觉降低到零度以下时,就会出现幻觉,幻境的现象。

晚上听见奇怪的声音,又大小孩的哭声,大人的聊天声,但这样的话应该是听到外面的猫叫,因为猫发春叫的话是像小孩子哭的声音

可能是你听错了吧,又或许是邻居的声音,不要多想。

在这个情况下,可能是你一天有点太疲惫了,出现幻听了

声音传出来的方向具体在哪里,是不是房子隔音不好邻居的声音

  • 鏅氫笂鍚埌濂囨殑澹伴煶
    绛旓細涓栫晫涓婃讳細鏈変簺鎴戜滑涓嶆噦鐨勪簨鎯咃紝涔熻浣犳槸涓涓瘮杈冪伒寮傜殑浜猴紝寰堝浜洪兘浼氬拰浠栦滑姣旇緝浜茶繎鐨勪汉閮戒細鏈変竴浜涙劅搴旓紝濡傛灉浣犱笉瑙夌殑瀹虫曠殑璇濓紝姝e父鍋氫簨灏辨槸浜嗭紱濡傛灉鎰熻绱у紶锛岄偅涔堝吇鎴愭甯哥殑浣滄伅鍒跺害锛屽瓱瀛愯锛氬惥鍠勫吇鍚炬旦鐒舵姘旓紒褰撲綘...
  • 涓轰粈涔堟櫄涓鐫¤鎬绘槸鍚埌鎬殑璇磋瘽澹伴煶
    绛旓細鍦ㄧ瀛︿笂瀵逛綘鎵鎻愬埌鐨勭幇璞℃棭鏈夎杩帮細姣忕鐗╀綋锛堜緥濡備綘鐨勫簥锛夐兘鏈夎嚜宸辩殑鎸姩棰戠巼锛屽綋澶栫晫鐨勯渿鍔ㄩ鐜囦笌杩欎釜鐗╀綋鐨勮嚜韬渿鍔ㄩ鐜囩浉鍚屾椂灏变細浜х敓璋愭尟锛屽綋鐗╀綋浜х敓璋愭尟鏃跺叾鎸箙鍙兘浼氭斁澶уソ澶氬嶃備骇鐢熻皭鎸悗锛屾湰涓嶅簲璇鍚埌鐨勫0闊鍙兘...
  • 鎴戜竴涓汉鏅氫笂鍦ㄨ矾涓婅蛋鐫璧扮潃鍚埌鏃佽竟濂囨殑澹伴煶闃存.妫偅绉,涓嶇煡閬撴槸浠...
    绛旓細鐏靛紓鏄汉绫诲鏈煡浜嬬墿鐨勪竴绉嶈В閲娿傚氨鍍忓嚑鍗冨勾鍓嶇殑浜轰滑涓嶇煡鎰熷啋涓轰綍浜嬭屽幓姹傜鎷滃ぉ锛屼汉浠鐏靛紓鐨勬帰绱篃鏄负浜嗗鎵句竴绉嶆柊鐨勭悊璁烘殏鏃舵浛浠g瀛︽棤娉曡В閲婄殑灞傞潰锛涜屽湪鏂颁笘绾紝浜轰滑涓嶄粎鎶婄伒寮備綔涓轰笂杩扮殑涓绉嶈В閲婏紝涔熸湁浜烘槸涓轰簡瀵绘眰...
  • 鏅氫笂鍚埌鏈瑙勫緥鐨勬暡鍑澹,鍢熷槦鍢熺殑鍝,鏄笉鏄湁楝煎晩
    绛旓細鎮ㄥソ锛鏅氫笂鍚埌鏈瑙勫緥鐨勬暡鍑诲0涓嶄竴瀹氭槸鏈夐鐨勶紝鍥犱负楝兼槸涓嶅瓨鍦ㄧ殑锛屾垜浠鐩镐俊绉戝杩欎簺澹伴煶鐨勬潵婧愭湁鍙兘鏄鍦ㄨ淇殑锛岄偦灞呬篃鏈夊彲鑳芥槸琚厫铓鐨勭閬撳彂鍑鐨勫0闊
  • 涓轰粈涔鎴鏅氫笂鐫¤鐨勬椂鍊鍚埌鏈涓绉濂囨殑澹伴煶???
    绛旓細鏄綘鐫″墠澶叴濂嬶紝鐫$潃鏃跺ぇ鑴戣繕澶勪簬娲诲姩鐘舵侊紝鑷嗗康涓鍚埌鐨***澹伴煶銆傚缓璁潯鍓嶄笉瑕佽繃浜庡叴濂嬶紝淇濇寔杞绘澗鐨勫績鎯咃紝浠涔閮戒笉瑕佹兂锛屽氨鏄兂鐫鐫¤锛屽氨涓嶄細鍑虹幇浣犺鐨勬儏鍐典簡銆
  • 姣忔鍗婂涓夋洿鏃,鎴戦兘瑕侀啋鏉,灏变細鍚寰濂囨殑澹伴煶鎴戝彧瑕佷竴鍔ㄩ偅澹伴煶灏...
    绛旓細浣犺繖绉嶆儏鍐电殑搴旇鏄缁忚“寮辨墍瀵艰嚧锛屽缓璁憿锛屼拱鐐瑰効璋风淮绱犲晩锛屾垨鑰呭埡浜斿姞鍐插墏璋冪悊璋冪悊銆傚績閲屽潶鑽★紝楝煎張浣曞Θ銆備笘鐣屼笂鏈病鏈夐锛屽績閲岀枒绁炵枒楝煎氨鏈変簡楝笺
  • 涓轰粈涔姣忓綋澶滄繁浜洪潤鐨勬椂鍊,鎬昏兘鍚杩滄柟浼犳潵鍛滃憸澹,鎰熻鍍忔槸鏈哄櫒,浣嗗張...
    绛旓細鍙互璁╁浜轰篃鍚笅锛岀湅鏄惁鏄釜浜哄够瑙夈傛瘡澶鏅氫笂閮芥湁鐨勮瘽锛屽彲鑳芥垨璁歌繙澶勭湡鐨勬湁浣滀笟锛屼骇鐢鐨勫0闊锛
  • 涓轰粈涔堟櫄涓鐫¤,鎬昏兘鍚埌妤间笂鏈夊脊閽㈢彔鐨勫0闊?
    绛旓細浠庤屽舰鎴愪竴涓腑绌虹殑绌洪棿锛屽綋閽㈢瓔鍜屾按娉ュ彈鍒颁簡鎸ゅ帇鐨勬椂鍊欙紝閽㈢瓔灏变細鍦ㄨ繖涓┖闅欎箣闂存尋鍘嬶紝鍥犳浜х敓浜嗘垜浠墍鍚埌閽㈢彔鐨勫0闊銆涓轰粈涔鎴戜滑缁忓父鍦鏅氫笂鍚埌鍛紵鑰岀櫧澶╁嵈浠庢潵娌℃湁鍚埌鐨勫憿?杩欐槸鍙兘鐢变簬鏅氫笂鍣煶姣旇緝灏忥紝鎵浠ユ垜浠澹伴煶...
  • 涓轰粈涔浼氬湪鏅氫笂鍚埌妤间笂浼间箮鏈夊脊鐝犺惤鍦鐨勫0闊
    绛旓細鏅氫笂鍚埌妤间笂浼间箮鏈夊脊鐝犺惤鍦鐨勫0闊鏄挗绛嬪拰姘存偿瑙i櫎鐨勯湁鑿屽鑷寸殑銆傝繖绉嶉湁鑿屽ソ鐢熶簬澶氱粏瀛旇〃闈紝浠ユ按娉ヤ腑鐭跨墿璐ㄤ负椋熴傜粏閽㈢瓔涓庢按娉ユ帴瑙﹂潰鏄渶鐞嗘兂缂濈粏锛岄湁鑿屽鑱氱敓浜庢銆傝弻涓濆悜鍥涘懆寮濮嬩镜铓鎴愪竴涓腑绌哄瀷绠¢亾锛屽綋鏌愭牴鏈夊簲鍔...
  • 鏅氫笂鍚埌璇″紓鐨勭瑧澹版庝箞鍔
    绛旓細鏅氫笂鍚埌璇″紓鐨勭瑧澹板彲浠ュ墠鍘绘煡鐪嬫槸浠涔鏉ユ簮銆鏅氫笂鍚埌濂囨殑澹伴煶鎴栬呰寮傜殑绗戝0鏃跺畬鍏ㄤ笉鐢ㄥ鎬曪紝鍥犱负杩欏彲鑳芥槸鑷繁楂樺害绱у紶鑰岄犳垚鐨勯敊瑙夛紝涔熸湁鍙兘鏄嚜宸卞钩鏃跺氨鑳嗗瓙灏忚屾鐤戣嚜宸辩殑鍚锛屾墍浠ヨ繖鏃跺欐垜浠竴瀹氳鍘绘煡鐪嬪0闊崇殑鏉ユ簮銆傝...
  • 扩展阅读:半夜听见怪声的禁忌 ... 怀孕了一晚上连做两个噩梦 ... 最吓人的阴森音乐 ... 女朋友主动把手放我口袋里 ... 半夜听到隔壁床咯吱咯吱 ... 爸妈房里传出奇怪的声音 ... 一个晚上4至5次夜尿怎么办 ... 床晃动的咯吱咯吱声音 ... 半夜娃醒来撞见父母恩爱 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网