{"id":25201286,"url":"https://github.com/manfredipist/qtcpsocket","last_synced_at":"2025-05-12T13:20:41.201Z","repository":{"id":39535909,"uuid":"157770986","full_name":"manfredipist/QTcpSocket","owner":"manfredipist","description":"A simple Qt client-server TCP architecture to transfer data between peers","archived":false,"fork":false,"pushed_at":"2022-04-28T14:14:09.000Z","size":608,"stargazers_count":135,"open_issues_count":0,"forks_count":41,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-31T22:27:13.694Z","etag":null,"topics":["cplusplus","peers","qt5","qtcpsocket","tcp","tcp-client","tcp-server","tcp-socket","transfer-messages"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/manfredipist.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-15T20:50:22.000Z","updated_at":"2025-01-27T17:19:07.000Z","dependencies_parsed_at":"2022-08-01T08:39:01.109Z","dependency_job_id":null,"html_url":"https://github.com/manfredipist/QTcpSocket","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manfredipist%2FQTcpSocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manfredipist%2FQTcpSocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manfredipist%2FQTcpSocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/manfredipist%2FQTcpSocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/manfredipist","download_url":"https://codeload.github.com/manfredipist/QTcpSocket/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745197,"owners_count":21957320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cplusplus","peers","qt5","qtcpsocket","tcp","tcp-client","tcp-server","tcp-socket","transfer-messages"],"created_at":"2025-02-10T04:37:19.601Z","updated_at":"2025-05-12T13:20:41.172Z","avatar_url":"https://github.com/manfredipist.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QTcpSocket\n\nA simple Qt client-server TCP architecture to transfer data between peers.\n\n![Application](https://github.com/manfredipist/QTcpSocket/blob/master/images/demo.png?raw=true)\n\nThe Architecture is made up of 2 projects:\n- QTCPServer\n- QTCPClient\n\nYou can instantiate as many QTCPClient as you wish.\n\n## Features\n\n1. Broadcast transferring\n2. Single channel transferring\n3. Media transferring capabilities (*.json, *.txt, *.png, *.jpg, *.jpeg)  \n4. Updated to latest slot-signal syntax found in Qt 5.15\n5. Non-redundant design\n\n## Protocol\n\nThe protocol i've designed to enable data transferring is pretty straightforward, each message sent is made up of:\n- A 128 byte fixed-size header\n- A Non-fixed size data buffer\n\n![Protocol schema](https://github.com/manfredipist/QTcpSocket/blob/master/images/protocol.png?raw=true)\n\nThe header follows the following structure:\n```\nQString header = QString(\"fileType:%1, fileName:%2, fileSize:%3;\")\n```\nWhere:\n- ```%1``` can be \"attachment\" or \"message\";\n- ```%2``` is \"null\" for messages, the correspondent fileName for attachments sent;\n- ```%3``` is the size of the message or the attachment sent.\n\nMany improvements could have been made during protocol design, one among many, to specify header size in the header and save up some byte during transfers, especially messages ones.\n\n__*This protocol is meant to be used only for recreative purposes as it isn't compliant at all to the FTP quality standards, that we are used to, nowadays.*__\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanfredipist%2Fqtcpsocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmanfredipist%2Fqtcpsocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmanfredipist%2Fqtcpsocket/lists"}