Probleme TCP-Server
Verfasst: Dienstag 25. Januar 2022, 21:54
Ich habe eure Ratschläge befolgt und mit einen "fertigen" TCP-Server besorgt.
Ich habe diesen Server hier genutzt:
https://docs.python.org/3/library/socketserver.html
und in diesem Beispiel umgesetzt.
Der Server läuft stabil, auch durch den Client verursachte Unterbrechungen werden sicher erkannt.
Allerdings kommen nicht alle Frames des Client an.
In Wireshark sehe ich das Frame (126 11.557244):
Was könnte es für Gründe geben, das nur die Frames mit msg[2] == 0x07 durchkommen?
Ich habe diesen Server hier genutzt:
https://docs.python.org/3/library/socketserver.html
und in diesem Beispiel umgesetzt.
Code: Alles auswählen
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
# self.request is the TCP socket connected to the client
self.data = self.request.recv(1024).strip()
print("{}:{} wrote:".format(self.client_address[0],self.client_address[1]))
print(self.data)
# just send back the same data, but upper-cased
#self.request.sendall(self.data.upper())
msg = self.data
print(msg)
if msg[2] == 0x07:
print("<- U (STARTDT act)")
data = bytearray(msg)
data[2] = 0x0B
self.request.sendall(data)
print("-> U (STARTDT con)")
elif msg[2] == 0x43:
print("<- U (TESTFR act)")
data = bytearray(msg)
data[2] = 0x83
self.request.sendall(data)
print("-> U (TESTFR con)")
else:
print("NIL: {}".fomat(msg))
HOST, PORT = "localhost", 2404
# Create the server, binding to localhost on port 9999
with socketserver.TCPServer((HOST, PORT), MyTCPHandler) as server:
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
server.serve_forever()
Allerdings kommen nicht alle Frames des Client an.
In Wireshark sehe ich das Frame (126 11.557244):
Im Code nicht:17 1.538268 127.0.0.1 52036 127.0.0.1 2404 TCP 56 52036 → 2404 [SYN] Seq=0 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
18 1.538378 127.0.0.1 2404 127.0.0.1 52036 TCP 56 2404 → 52036 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
19 1.538419 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [ACK] Seq=1 Ack=1 Win=2161152 Len=0
20 1.539193 127.0.0.1 52036 127.0.0.1 2404 IEC 60870-5-104 50 <- U (STARTDT act)
21 1.539231 127.0.0.1 2404 127.0.0.1 52036 TCP 44 2404 → 52036 [ACK] Seq=1 Ack=7 Win=2161152 Len=0
22 1.543046 127.0.0.1 2404 127.0.0.1 52036 IEC 60870-5-104 50 -> U (STARTDT con)
23 1.543099 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [ACK] Seq=7 Ack=7 Win=2161152 Len=0
24 1.544044 127.0.0.1 2404 127.0.0.1 52036 TCP 44 2404 → 52036 [FIN, ACK] Seq=7 Ack=7 Win=2161152 Len=0
25 1.544097 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [ACK] Seq=7 Ack=8 Win=2161152 Len=0
26 1.544191 127.0.0.1 52036 127.0.0.1 2404 TCP 44 52036 → 2404 [FIN, ACK] Seq=7 Ack=8 Win=2161152 Len=0
27 1.544264 127.0.0.1 2404 127.0.0.1 52036 TCP 44 2404 → 52036 [ACK] Seq=8 Ack=8 Win=2161152 Len=0
28 1.545093 127.0.0.1 52037 127.0.0.1 2404 TCP 56 52037 → 2404 [SYN] Seq=0 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
29 1.545224 127.0.0.1 2404 127.0.0.1 52037 TCP 56 2404 → 52037 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
30 1.545277 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [ACK] Seq=1 Ack=1 Win=2161152 Len=0
71 6.545328 127.0.0.1 52037 127.0.0.1 2404 IEC 60870-5-104 50 <- U (STARTDT act)
72 6.545383 127.0.0.1 2404 127.0.0.1 52037 TCP 44 2404 → 52037 [ACK] Seq=1 Ack=7 Win=2161152 Len=0
73 6.549790 127.0.0.1 2404 127.0.0.1 52037 IEC 60870-5-104 50 -> U (STARTDT con)
74 6.549861 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [ACK] Seq=7 Ack=7 Win=2161152 Len=0
75 6.551681 127.0.0.1 2404 127.0.0.1 52037 TCP 44 2404 → 52037 [FIN, ACK] Seq=7 Ack=7 Win=2161152 Len=0
76 6.551740 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [ACK] Seq=7 Ack=8 Win=2161152 Len=0
77 6.551891 127.0.0.1 52037 127.0.0.1 2404 TCP 44 52037 → 2404 [FIN, ACK] Seq=7 Ack=8 Win=2161152 Len=0
78 6.551971 127.0.0.1 2404 127.0.0.1 52037 TCP 44 2404 → 52037 [ACK] Seq=8 Ack=8 Win=2161152 Len=0
79 6.552910 127.0.0.1 52038 127.0.0.1 2404 TCP 56 52038 → 2404 [SYN] Seq=0 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
80 6.553087 127.0.0.1 2404 127.0.0.1 52038 TCP 56 2404 → 52038 [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 MSS=65495 WS=256 SACK_PERM=1
81 6.553171 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [ACK] Seq=1 Ack=1 Win=2161152 Len=0
122 11.553990 127.0.0.1 52038 127.0.0.1 2404 IEC 60870-5-104 50 <- U (STARTDT act)
123 11.554025 127.0.0.1 2404 127.0.0.1 52038 TCP 44 2404 → 52038 [ACK] Seq=1 Ack=7 Win=2161152 Len=0
124 11.556558 127.0.0.1 2404 127.0.0.1 52038 IEC 60870-5-104 50 -> U (STARTDT con)
125 11.556600 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [ACK] Seq=7 Ack=7 Win=2161152 Len=0
126 11.557244 127.0.0.1 52038 127.0.0.1 2404 IEC 60870-5 ASDU 60 <- I (0,0) ASDU=65535 C_IC_NA_1 Act IOA=0
127 11.557277 127.0.0.1 2404 127.0.0.1 52038 TCP 44 2404 → 52038 [ACK] Seq=7 Ack=23 Win=2161152 Len=0
128 11.557540 127.0.0.1 2404 127.0.0.1 52038 TCP 44 2404 → 52038 [FIN, ACK] Seq=7 Ack=23 Win=2161152 Len=0
129 11.557571 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [ACK] Seq=23 Ack=8 Win=2161152 Len=0
130 11.557626 127.0.0.1 52038 127.0.0.1 2404 TCP 44 52038 → 2404 [FIN, ACK] Seq=23 Ack=8 Win=2161152 Len=0
Code: Alles auswählen
127.0.0.1:52036 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:13,855 - INFO - <- U (STARTDT act)
2022-01-25 21:47:13,856 - INFO - -> U (STARTDT con)
127.0.0.1:52037 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:18,861 - INFO - <- U (STARTDT act)
2022-01-25 21:47:18,863 - INFO - -> U (STARTDT con)
127.0.0.1:52038 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:23,869 - INFO - <- U (STARTDT act)
2022-01-25 21:47:23,870 - INFO - -> U (STARTDT con)
127.0.0.1:52039 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:28,873 - INFO - <- U (STARTDT act)
2022-01-25 21:47:28,873 - INFO - -> U (STARTDT con)
127.0.0.1:52042 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:33,876 - INFO - <- U (STARTDT act)
2022-01-25 21:47:33,876 - INFO - -> U (STARTDT con)
127.0.0.1:52043 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:38,881 - INFO - <- U (STARTDT act)
2022-01-25 21:47:38,882 - INFO - -> U (STARTDT con)
127.0.0.1:52044 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'
2022-01-25 21:47:43,888 - INFO - <- U (STARTDT act)
2022-01-25 21:47:43,889 - INFO - -> U (STARTDT con)
127.0.0.1:52046 wrote:
b'h\x04\x07\x00\x00\x00'
b'h\x04\x07\x00\x00\x00'