Python Forum
First Byte of a string is missing while receiving data over TCP Socket
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
First Byte of a string is missing while receiving data over TCP Socket
#1
Dear All Friends.
I am trying to communicate with an IEC-60870-5-104 server through TCP sockets. The IEC server is located over the local host 127.0.0.1: 2404 and I am trying to send a HEX message with the help of send() function. Please look at my code
#import the socket library import socket # create a socket object s = socket.socket() print("Socket successfully created") # connect to the server on local computer, 2404 default port for IEC-104 Server s.connect(('127.0.0.1', 2404)) # send a hex message in bytes s.send(b'\x68\x04\x07\x00\x00\x00') data = s.recv(1024) s.close() print( "received data:", data)
Now when i run the code, it connects successfully with the server, Sends the HEX message which is
0x68 0x04 0x07 0x00 0x00 0x00

In response it receives the hex message 0x68 0x04 0x0B 0x00 0x00 0x00
I confirmed this with Wireshark but what I find on my shell is
======== RESTART: C:/Users/Shahrukh/Desktop/Python Coding/TCP Server.py ========
Socket successfully created
received data: b'h\x04\x0b\x00\x00\x00'
>>>
Only 5 bytes are shown, where is the 1st byte 0x68? I must receive and show 0x68 0x04 0x0B 0x00 0x00 0x00, whats wrong? Please help
Reply
#2
Not sure, but this could be related to big endian, little endian conversion.
Here's a blog on the subject: https://pythontic.com/modules/socket/byt...-functions
Reply
#3
I count 6 bytes. The first byte is a h.
You have a computer and you're using a programming language.
Just use len(data) to get the length.

In [2]: hex(ord('h')) Out[2]: '0x68'
The first letter is a h, which is 104 in ascii and unicode, which is 0x68 in hex.

All printable ASCII characters in bytes are represented as printable version and not with the hex value.
If you want to represent the bytes as hex-string, you could use binascii.hexlify()

import binascii data = b'\x68\x04\x07\x00\x00\x00' hexstr = binascii.hexlify(data, ' ', 1).decode() # yes, hexlify return bytes # the decode step is ugly print(hexstr)
Output:
68 04 07 00 00 00
Almost dead, but too lazy to die: https://sourceserver.info
All humans together. We don't need politicians!
Reply
#4
Oh My God, Now I got it, its basically the ascii codes which I am receiving. Thank you very very much.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Return a string or byte object from Enum class? Calab 5 1,847 May-14-2025, 05:21 PM
Last Post: snippsat
  Listening on receiving Interface (using scapy) CodyTheCodeNoob 1 3,250 Dec-22-2024, 10:51 PM
Last Post: PolandoFaker
  Handling receiving updates from user in Telebot mohsenamiri 0 3,380 Aug-26-2024, 09:25 AM
Last Post: mohsenamiri
  Receiving this error in my "response" and causes script to return wrong status cubangt 18 7,549 Aug-13-2023, 12:16 AM
Last Post: cubangt
  SMA (simple moving avg) Not receiving Data (stock prices). gdbengo 2 2,636 Jul-31-2022, 08:20 PM
Last Post: paulyan
  Receiving snmp traps with more than one Community String ilknurg 0 5,016 Jan-19-2022, 09:02 AM
Last Post: ilknurg
  How to read rainfall time series and insert missing data points MadsM 4 4,330 Jan-06-2022, 10:39 AM
Last Post: amdi40
  calculate data using 1 byte checksum korenron 2 5,094 Nov-23-2021, 07:17 AM
Last Post: korenron
  Help Sending Socket Data snippyro 0 1,733 Sep-23-2021, 01:52 AM
Last Post: snippyro
  QR code data missing in some of my QR codes Pedroski55 6 6,559 Jan-26-2021, 04:38 AM
Last Post: Pedroski55

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020
This forum uses Lukasz Tkacz MyBB addons.
Forum use Krzysztof "Supryk" Supryczynski addons.