[Linux] 最简单的socket通讯例子

本文提供了一组简单的网络通信代码示例,包括服务器端和客户端程序。这些示例旨在帮助初学者快速理解TCP套接字编程的基础,并为需要快速编写测试程序的开发者提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个代码很简单,用途有两个:

1,刚入门的新同学可以参考。

2,想随手写个测试程序的同学可以拷贝。

server:

#include <stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include <endian.h> #include <sys/time.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <arpa/inet.h> #include <netinet/in.h> int main(int argc, char** argv) { if (argc != 2) { printf("Usage:/n %s port/n", argv[0]); return 0; } int port = atoi(argv[1]); int sock = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = 0; int on = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); if (bind(sock, (struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("bind"); return 0; } if (listen(sock, 50) < 0) { perror("listen"); return 0; } printf("start listening .../nPress Ctrl+C to quit/n/n"); int count = 0; while (1) { accept(sock, 0, 0); count++; if (count%100 == 0) { printf("accepted: %d/n", count); } } return 0; }

client:

#include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include <endian.h> #include <sys/time.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <arpa/inet.h> #include <netinet/in.h> int main(int argc, char** argv) { if (argc != 3) { printf("Usage:/n %s ip port/n", argv[0]); return 0; } char* ip = argv[1]; int port = atoi(argv[2]); sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); printf("client running .../nPress Ctrl+C to quit/n/n"); int count = 0; while (1) { int sock = socket(AF_INET, SOCK_STREAM, 0); if (connect(sock, (sockaddr*)&addr, sizeof(addr)) < 0) { perror("connect"); return 0; } close(sock); //usleep(10*1000); count++; if (count%100 == 0) { printf("connected: %d/n", count); } } return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值