someip-rs
A Rust library for the SOME/IP (Scalable service-Oriented MiddlewarE over IP) protocol, built on std::net.
Features
- Pure Rust - No C dependencies, built on
std::net - Complete header support - Full 16-byte SOME/IP header with serialization
- Type-safe IDs -
ServiceId,MethodId,ClientId,SessionIdnewtypes - TCP & UDP - Both transport protocols with client/server support
- Builder pattern - Fluent API for message construction
- Request/Response - Built-in session management and correlation
Quick Start
[]
= "0.1"
Send a Request (TCP)
use ;
use TcpClient;
let mut client = connect?;
let request = request
.payload
.build;
let response = client.call?;
println!;
Handle Requests (TCP Server)
use TcpServer;
use MessageType;
let server = bind?;
for connection in server.incoming
UDP Client/Server
use ;
use ;
// Client
let mut client = new?;
let request = request
.payload
.build;
let response = client.call_to?;
// Server
let mut server = bind?;
let = server.receive?;
server.respond?;
Protocol Overview
SOME/IP messages consist of a 16-byte header followed by an optional payload:
+----------------+----------------+----------------+----------------+
| Service ID (16) | Method ID (16) |
+----------------+----------------+----------------+----------------+
| Length (32) |
+----------------+----------------+----------------+----------------+
| Client ID (16) | Session ID (16) |
+----------------+----------------+----------------+----------------+
| Proto Ver (8) | Iface Ver (8) | Msg Type (8) | Return Code(8) |
+----------------+----------------+----------------+----------------+
| Payload (variable) |
+----------------+----------------+----------------+----------------+
Examples
See examples/ for complete working examples:
message_basics.rs- Message creation, serialization, and parsingtcp_server.rs- TCP echo servertcp_client.rs- TCP client with request/responseudp_server.rs- UDP server with responsesudp_client.rs- UDP client with request/response
Run examples:
# Message basics (standalone)
# TCP (run server first, then client)
# UDP (run server first, then client)
Documentation
License
MIT OR Apache-2.0. See LICENSING.md.