{"id":20196251,"url":"https://github.com/arkregiel/inetsocketwrapper","last_synced_at":"2025-03-03T08:14:00.231Z","repository":{"id":128715932,"uuid":"485505974","full_name":"arkregiel/InetSocketWrapper","owner":"arkregiel","description":"Wrapper do funkcji gniazd dla TCP/IP języka C","archived":false,"fork":false,"pushed_at":"2024-02-03T15:22:18.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-13T19:39:12.884Z","etag":null,"topics":["cpp","network-programming","networking","socket-programming","tcp","udp"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arkregiel.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-25T19:25:08.000Z","updated_at":"2022-08-06T23:35:09.000Z","dependencies_parsed_at":"2024-11-14T07:15:17.112Z","dependency_job_id":null,"html_url":"https://github.com/arkregiel/InetSocketWrapper","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/arkregiel%2FInetSocketWrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkregiel%2FInetSocketWrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkregiel%2FInetSocketWrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arkregiel%2FInetSocketWrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arkregiel","download_url":"https://codeload.github.com/arkregiel/InetSocketWrapper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241629769,"owners_count":19993710,"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":["cpp","network-programming","networking","socket-programming","tcp","udp"],"created_at":"2024-11-14T04:22:47.415Z","updated_at":"2025-03-03T08:14:00.209Z","avatar_url":"https://github.com/arkregiel.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# InetSocketWrapper\r\n\r\nTen projekt to opakowanie dla klasycznych funkcji języka C dla gniazd TCP/IP, wykorzustujące programowanie zorientowane obiektowo.\r\n\r\nJego celem są:\r\n\r\n- uproszczenie procedury tworzenia (przynajmniej niezbyt skomplikowanych) aplikacji sieciowych w języku C++\r\n- większa przenaszalność między systemami Windows i Linux\r\n\r\nTestowane przy użyciu `g++` (Linux) oraz `cl.exe` (Windows 10)\r\n\r\n## Typy i stałe\r\n\r\n### Typy danych\r\n\r\n- `SocketType` - typ gniazda (TCP lub UDP)\r\n- `InternetProtocol` - wersja protokołu IP (IPv4 lub IPv6)\r\n- `SocketDescriptor` - deskryptor gniazda\r\n- `byte` - bajt (`uint8_t`)\r\n- `SocketAddress` - struktura opisująca gniazdo\r\n  - host - nazwa hosta (`std::string`)\r\n  - port - numer portu (`uint16_t`)\r\n\r\n### Stałe\r\n\r\n- TransmissionControlProtocol, TCP - typ gniazda TCP\r\n- UserDatagramProtocol, UDP - typ gniazda UDP\r\n- IPv4 - domena dla IPv4\r\n- IPv6 - domena dla IPv6\r\n\r\n## Metody publiczne klasy `InetSocket`\r\n\r\n- `InetSocket(InternetProtocol ip, SocketType type)`\r\n  - konstruktor, przyjmuje argumenty:\r\n    - `ip` - IPv4 lub IPv6\r\n    - `type` - TCP lub UDP\r\n\r\n\r\n- `InetSocket(SocketDescriptor sockd)`\r\n  - konstruktor wykorzystujący gotowy deskryptor gniazda do utworzenia obiektu\r\n\r\n\r\n- `~InetSocket()` \r\n  - destruktor, zamyka deskryptor gniazda\r\n\r\n\r\n- `bool CreateSocketDescriptor()`\r\n  - tworzy deskryptor gniazda\r\n\r\n\r\n- `bool Bind(SocketAddress addr)`\r\n  - wiąże gniazdo z adresem IP i portem podanymi w `addr`\r\n\r\n\r\n- `bool Connect(SocketAddress addr)`\r\n  - łączy się z zdalną usługą opisaną przez adres IP i port w `addr`\r\n\r\n\r\n- `void Listen(int backlog)`\r\n  - przekształca gniazdo TCP w gniazdo bierne i rozpoczyna nasłuch\r\n\r\n\r\n- `void Close()`\r\n  - zamyka gniazdo\r\n\r\n\r\n- `InetSocket AcceptConnection(SocketAddress \u0026ClientAddress)`\r\n  - akceptuje połączenie TCP\r\n  - zwraca obiekt `InetSocket` (gniazdo klienckie)\r\n\r\n\r\n- `bool SendBytes(const byte *data, size_t len, int flags = 0)`\r\n  - wysyła bajty (`*data`) o podanym rozmiarze (`len`)\r\n\r\n\r\n- `int SendString(const std::string \u0026data, int flags = 0)`\r\n  - wysyła łańcuch (`std::string`)\r\n\r\n\r\n- `int ReceiveBytes(byte *buffer, size_t len, int flags = 0)`\r\n  - odbiera podaną liczbę bajtów (`len`) i zapisuje dane w buforze (`*buffer`)\r\n\r\n\r\n- `std::string ReceiveString(size_t len, int flags = 0)`\r\n  - odbiera łańcuch znaków (`std::string`) o podanej długości (`len`)\r\n  - zwraca otrzymany łańcuch\r\n\r\n\r\n- `int SendBytesTo(byte *data, size_t len, SocketAddress target, int flags = 0)`\r\n  - wysyła bajty (`*data`) o podanym rozmiarze (`len`) do usługi opisanej przez adres IP i numer portu w `target`\r\n\r\n\r\n- `int SendStringTo(const std::string \u0026data, SocketAddress target, int flags = 0)`\r\n  - wysyła łańcuch znaków (`std::string data`) do usługi opisanej przez adres IP i numer portu w `target`\r\n\r\n\r\n- `int ReceiveBytesFrom(byte *buffer, size_t len, SocketAddress \u0026source, int flags = 0)`\r\n  - odbiera podaną liczbę bajtów (`len`) i zapisuje dane w buforze (`*buffer`)\r\n  - zapamiętuje adres IP i numer portu źródła w `source`\r\n\r\n\r\n- `std::string ReceiveStringFrom(size_t len, SocketAddress \u0026source, int flags = 0)`\r\n  - odbiera łańcuch znaków (`std::string`) o podanej długości (`len`)\r\n  - zapamiętuje adres IP i numer portu źródła w `source`\r\n  - zwraca otrzymany łańcuch","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkregiel%2Finetsocketwrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farkregiel%2Finetsocketwrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farkregiel%2Finetsocketwrapper/lists"}