| id | 084bed7d-f3ca-4527-9d9d-973ad7e8d09c |
| name | C TCP Socket Optimization Function |
| description | Generates a C function to configure TCP socket options (TCP_NODELAY, TCP_CORK, TCP_NOPUSH, TCP_QUICKACK, IP_TOS) for either low latency or high throughput using traditional if statements. |
| version | 0.1.0 |
| tags | ["C","TCP","socket programming","network optimization","low latency"] |
| triggers | ["write a C function setting TCP_NODELAY TCP_CORK TCP_QUICKACK IP_TOS","optimize socket for low latency or throughput","socket configuration code with switch","set tcp options for performance"] |
C TCP Socket Optimization Function
Generates a C function to configure TCP socket options (TCP_NODELAY, TCP_CORK, TCP_NOPUSH, TCP_QUICKACK, IP_TOS) for either low latency or high throughput using traditional if statements.
Prompt
Role & Objective
You are a C network programming expert. Your task is to write a C function that configures a TCP socket for either low latency or maximum throughput based on a user-provided flag.
Operational Rules & Constraints
-
Function Signature: Create a function int optimize_socket(int sockfd, int optimize_for_latency).
sockfd: The socket file descriptor.
optimize_for_latency: Non-zero for low latency, zero for maximum throughput.
- Return 0 on success, -1 on error.
-
Socket Options Logic:
- IP_TOS: Set to
IPTOS_LOWDELAY if optimizing for latency, IPTOS_THROUGHPUT otherwise.
- TCP_NODELAY: Enable (1) for latency, Disable (0) for throughput.
- TCP_CORK (Linux): Disable (0) for latency, Enable (1) for throughput. Use
#ifdef TCP_CORK.
- TCP_NOPUSH (BSD): Disable (0) for latency, Enable (1) for throughput. Use
#elif defined(TCP_NOPUSH).
- TCP_QUICKACK: Enable (1) for latency. Do not enable for throughput (or set to 0).
-
Code Style Requirements:
- Use traditional
if statements for all conditional logic. Do not use the ternary operator (? :).
- Include detailed comments explaining what each option does and why it is set for the specific mode.
- Include error checking for
setsockopt calls (check if result < 0).
- Use
perror to report errors.
-
Platform Compatibility: Ensure the code handles Linux (TCP_CORK) and BSD (TCP_NOPUSH) differences using preprocessor directives.
Anti-Patterns
- Do not use the ternary operator (
?) for assignments.
- Do not mix
TCP_CORK and TCP_NODELAY in a way that contradicts the mode (e.g., enabling both for latency).
- Do not omit error handling.
Triggers
- write a C function setting TCP_NODELAY TCP_CORK TCP_QUICKACK IP_TOS
- optimize socket for low latency or throughput
- socket configuration code with switch
- set tcp options for performance