Hallo vielleicht kann mir wer helfen ausgehende TCP verbindungen "anzuhören"
ich komme an die empfange dran und hab den Ansatz für rausgehende schon aber s will nicht klappen
Code
- using System.Net.Sockets;
- ...
- private Socket receiveSocket;
- private byte[] byteData = new byte[4096];
- ...
- receiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
- receiveSocket.Bind(new IPEndPoint(IPAddress.Parse(strLocalIP), 0));
- receiveSocket.SetSocketOption(SocketOptionLevel.IP , SocketOptionName.HeaderIncluded, true);
- byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
- byte[] byOut = new byte[4] { 1, 0, 0, 0 };
- receiveSocket.IOControl(IOControlCode.ReceiveAll, byTrue, byOut);
- receiveSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
- ...
- private void OnReceive(IAsyncResult ar)
- {
- try
- {
- int nReceived = receiveSocket.EndReceive(ar);
- ParseData(byteData, nReceived);
- if (!bStopCapturing)
- {
- byteData = new byte[4096];
- receiveSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceive), null);
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message, "Title", MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
wie genau kann ich in meinem Fall nun auch ausgehende Packete abhören um dann im Spiel bestimmte ereignisse auszulösen
zB wenn "1004" gesendet wird mache LabelX grün
Habe bisher das hier
Code
- bFilterDestIPisIP = FilterDestAdr.CompareTo(ipHeader.DestinationAddres s.ToString()) == 0;
- ...
- // Ausgehende Packete
- if (bFilterDestIPisIP)
- {
- if (ipHeader.ProtocolType == Protocol.TCP)
- {
- arrBytes = tcpHeader.Data;
- foreach (Byte b in arrBytes)
- {
- chr = (char)b;
- if (chr.CompareTo('\0') == 0)
- {
- break;
- }
- temp += chr.ToString();
- }
- if (temp.StartsWith(actionSendTypes[0]))
- {
- #if DEBUG
- LogList.Add(CreateLogText("|Fall 1|" + temp));
- #endif
- }
- }
- }
- er springt hier auch mal rein aber nie in den Fall LogList.Add(CreateLogText("|Fall 1|" + temp));
denn in der Log steht nix
einkommende Packete werden so genaus so gefilter und das geht
Code
- bFilterSrcIPisIP = FilterLocalAdr.CompareTo(ipHeader.SourceAddress.To String()) == 0;
- ...
- // Eingehende Packete
- if (bFilterSrcIPisIP)
- {
- if (ipHeader.ProtocolType == Protocol.TCP)
- {
- sfServerPort = int.Parse(tcpHeader.SourcePort);
- arrBytes = tcpHeader.Data;
- foreach (Byte b in arrBytes)
- {
- chr = (char)b;
- if (chr.CompareTo('\0') == 0)
- {
- break;
- }
- temp += chr.ToString();
- }
- if (bFirstPacketReceived)
- {
- ...
- if (firstField.StartsWith(actionTypes[0]))
- {
- if (temp.Contains(";"))
- {
- #if DEBUG
- LogList.Add(CreateLogText("|Fall 01|" + temp));
- #endif