Claude Code Plugins

Community-maintained marketplace

Feedback

Low-level socket programming including BSD sockets, Winsock, and network byte manipulation

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name socket-programming
description Low-level socket programming including BSD sockets, Winsock, and network byte manipulation
sasmp_version 1.3.0
version 2.0.0
bonded_agent 02-networking-specialist
bond_type SECONDARY_BOND
parameters [object Object]
retry_config [object Object]
observability [object Object]

Socket Programming for Games

Master low-level socket programming for custom game networking.

Socket Types

Type Protocol Use Case
SOCK_STREAM TCP Reliable data
SOCK_DGRAM UDP Real-time
SOCK_RAW Raw IP Custom protocols

BSD Socket (C)

#include <sys/socket.h>
#include <netinet/in.h>

int create_game_server(int port) {
    int sockfd = socket(AF_INET, SOCK_DGRAM, 0);

    struct sockaddr_in addr = {
        .sin_family = AF_INET,
        .sin_port = htons(port),
        .sin_addr.s_addr = INADDR_ANY
    };

    bind(sockfd, (struct sockaddr*)&addr, sizeof(addr));
    fcntl(sockfd, F_SETFL, O_NONBLOCK);

    return sockfd;
}

Socket Options

// Disable Nagle (reduce latency)
int flag = 1;
setsockopt(sockfd, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(flag));

// Enable address reuse
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));

// Set buffer size
int bufsize = 65536;
setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, &bufsize, sizeof(bufsize));

Byte Order

// Network byte order
uint16_t port_net = htons(8080);
uint32_t ip_net = htonl(ip_host);

// Host byte order
uint16_t port_host = ntohs(port_net);

Platform Differences

Feature BSD Winsock
Init None WSAStartup()
Close close() closesocket()
Error errno WSAGetLastError()
Non-block fcntl() ioctlsocket()

Troubleshooting

Common Failure Modes

Error Root Cause Solution
EADDRINUSE Port in use SO_REUSEADDR
ECONNRESET Peer closed Handle gracefully
EMFILE Too many fds Increase ulimit
High latency Nagle TCP_NODELAY

Debug Checklist

# Check listening sockets
netstat -tlnp | grep game-server

# Trace syscalls
strace -e socket,bind,connect ./game-server

# Monitor traffic
tcpdump -i lo port 8080

Unit Test Template

void test_socket_creation() {
    int fd = create_game_server(8080);
    assert(fd >= 0);

    struct sockaddr_in addr;
    socklen_t len = sizeof(addr);
    getsockname(fd, (struct sockaddr*)&addr, &len);
    assert(ntohs(addr.sin_port) == 8080);

    close(fd);
}

Resources

  • assets/ - Socket templates
  • references/ - Platform guides