3232 #define FOSSIL_IO_INVALID_SOCKET (-1 )
3333#endif
3434
35+ #define FOSSIL_IO_SOCKET_TYPE_TCP SOCK_STREAM
36+ #define FOSSIL_IO_SOCKET_TYPE_UDP SOCK_DGRAM
37+ #define FOSSIL_IO_SOCKET_TYPE_RAW SOCK_RAW
38+ #define FOSSIL_IO_SOCKET_TYPE_RDM SOCK_RDM
39+ #define FOSSIL_IO_SOCKET_TYPE_SEQPACKET SOCK_SEQPACKET
40+
3541#ifdef __cplusplus
3642extern " C" {
3743#endif
@@ -51,7 +57,7 @@ void fossil_io_network_destroy(void);
5157 * Create a new TCP socket.
5258 * Returns a valid socket on success or FOSSIL_IO_INVALID_SOCKET on failure.
5359 */
54- fossil_io_socket_t fossil_io_network_create_socket (void );
60+ fossil_io_socket_t fossil_io_network_create_socket (int type );
5561
5662/* *
5763 * Bind a socket to a specific port (IPv4/IPv6).
@@ -94,8 +100,21 @@ int fossil_io_network_receive(fossil_io_socket_t sock, void *buffer, size_t len)
94100 */
95101void fossil_io_network_close (fossil_io_socket_t sock);
96102
103+ /* *
104+ * Send data to a specific IP address and port.
105+ * Returns the number of bytes sent, or -1 on failure.
106+ */
107+ int fossil_io_network_sendto (fossil_io_socket_t sock, const void *data, size_t len, const char *ip, uint16_t port);
108+
109+ /* *
110+ * Receive data from a specific IP address and port.
111+ * Returns the number of bytes received, or -1 on failure.
112+ */
113+ int fossil_io_network_recvfrom (fossil_io_socket_t sock, void *buffer, size_t len, char *ip, uint16_t *port);
114+
97115#ifdef __cplusplus
98116}
117+
99118/* *
100119 * C++ wrapper for the output functions.
101120 */
@@ -128,8 +147,8 @@ namespace fossil {
128147 * Create a new TCP socket.
129148 * Returns a valid socket on success or FOSSIL_IO_INVALID_SOCKET on failure.
130149 */
131- static fossil_io_socket_t create_socket (void ) {
132- return fossil_io_network_create_socket ();
150+ static fossil_io_socket_t create_socket (int type ) {
151+ return fossil_io_network_create_socket (type );
133152 }
134153
135154 /* *
@@ -187,6 +206,22 @@ namespace fossil {
187206 fossil_io_network_close (sock);
188207 }
189208
209+ /* *
210+ * Send data to a specific IP address and port.
211+ * Returns the number of bytes sent, or -1 on failure.
212+ */
213+ static int sendto (fossil_io_socket_t sock, const void *data, size_t len, const char *ip, uint16_t port) {
214+ return fossil_io_network_sendto (sock, data, len, ip, port);
215+ }
216+
217+ /* *
218+ * Receive data from a specific IP address and port.
219+ * Returns the number of bytes received, or -1 on failure.
220+ */
221+ static int recvfrom (fossil_io_socket_t sock, void *buffer, size_t len, char *ip, uint16_t *port) {
222+ return fossil_io_network_recvfrom (sock, buffer, len, ip, port);
223+ }
224+
190225 };
191226 }
192227}
0 commit comments