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_LOWDELAYif optimizing for latency,IPTOS_THROUGHPUTotherwise. - 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).
- IP_TOS: Set to
-
Code Style Requirements:
- Use traditional
ifstatements 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
setsockoptcalls (check if result < 0). - Use
perrorto report errors.
- Use traditional
-
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_CORKandTCP_NODELAYin 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