# 查看网络接口信息
ifconfig -a
ip addr show
# 检查路由表
route -n
ip route show
# 检查网络服务状态(根据发行版选择)
systemctl status networking # Debian/Ubuntu
systemctl status network # RHEL/CentOS
# 安装GCC编译器
sudo apt-get install build-essential # Debian/Ubuntu
sudo yum groupinstall "Development Tools" # RHEL/CentOS
# 安装网络调试工具
sudo apt-get install net-tools tcpdump wireshark # Debian/Ubuntu
sudo yum install net-tools tcpdump wireshark # RHEL/CentOS
# 临时开放端口(重启后失效)
sudo iptables -A INPUT -p tcp --dport [PORT] -j ACCEPT
# 永久保存iptables规则(根据发行版选择)
sudo apt-get install iptables-persistent # Debian/Ubuntu
sudo service iptables save # RHEL/CentOS 6
sudo firewall-cmd --add-port=[PORT]/tcp --permanent # RHEL/CentOS 7+ firewalld
sudo firewall-cmd --reload
# 查看当前TCP/IP参数
sysctl -a | grep net.ipv4
# 常用调优参数(编辑/etc/sysctl.conf)
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65535
# 应用修改
sudo sysctl -p
# 查看当前限制
ulimit -n
# 修改限制(编辑/etc/security/limits.conf)
* soft nofile 65535
* hard nofile 65535
# 需要重新登录生效
// 保存为server.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 8080
#define BUFFER_SIZE 1024
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[BUFFER_SIZE] = {0};
// 创建socket
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
// 设置socket选项
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
perror("setsockopt");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
// 绑定socket
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
// 监听
if (listen(server_fd, 3) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
printf("Server listening on port %d...\n", PORT);
// 接受连接
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
// 读取数据
read(new_socket, buffer, BUFFER_SIZE);
printf("Message received: %s\n", buffer);
// 发送响应
char *response = "Hello from server";
send(new_socket, response, strlen(response), 0);
printf("Response sent\n");
return 0;
}
# 编译服务器
gcc server.c -o server
# 运行服务器(需要root权限绑定低端口)
sudo ./server
# 在另一个终端测试连接
telnet localhost 8080
# 或使用netcat
nc localhost 8080
# 检查IPv6支持
cat /proc/sys/net/ipv6/conf/all/disable_ipv6 # 0表示启用
# 启用IPv6(如果未启用)
echo 0 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6
# 永久启用(编辑/etc/sysctl.conf)
net.ipv6.conf.all.disable_ipv6 = 0
# 安装libevent
sudo apt-get install libevent-dev # Debian/Ubuntu
sudo yum install libevent-devel # RHEL/CentOS
# 安装ZeroMQ
sudo apt-get install libzmq3-dev # Debian/Ubuntu
sudo yum install zeromq-devel # RHEL/CentOS
通过以上配置,您的Linux系统将能够很好地支持TCP/IP网络编程开发。根据具体应用需求,可能还需要进一步调整系统参数或安装特定库。