套接字编程基础
在 Linux 操作系统中,套接字是一种通信端点,允许进程之间通过网络或本地计算机管道进行数据交换。套接字编程涉及创建和管理这些端点,以便在应用程序之间发送和接收数据。
套接字编程实例:客户端-服务器交互
客户端程序
c
include
include
include
int main() {
int client_socket;
struct sockaddr_in server_addr;
// 创建客户端套接字
client_socket = socket(AF_INET, SOCK_STREAM, 0);
// 配置服务器地址
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
// 连接到服务器
connect(client_socket, (struct sockaddr *) &server_addr, sizeof(server_addr));
// 发送数据到服务器
char *message = "Hello from client!";
send(client_socket, message, strlen(message), 0);
// 接收来自服务器的响应
char buffer[1024];
recv(client_socket, buffer, 1024, 0);
// 打印服务器响应
printf("Received from server: %s\n", buffer);
// 关闭客户端套接字
close(client_socket);
return 0;
}
服务器程序
c
include
include
include
include
int main() {
int server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
char buffer[1024];
// 创建服务器套接字
server_socket = socket(AF_INET, SOCK_STREAM, 0);
// 配置服务器地址
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
server_addr.sin_addr.s_addr = INADDR_ANY;
// 绑定服务器套接字到地址
bind(server_socket, (struct sockaddr *) &server_addr, sizeof(server_addr));
// 监听客户端连接
listen(server_socket, 5);
// 接受客户端连接
client_socket = accept(server_socket, (struct sockaddr *) &client_addr, (socklen_t *) &sizeof(client_addr));
// 接收来自客户端的数据
recv(client_socket, buffer, 1024, 0);
// 发送响应到客户端
char *message = "Hello from server!";
send(client_socket, message, strlen(message), 0);
// 关闭客户端套接字
close(client_socket);
// 关闭服务器套接字
close(server_socket);
return 0;
}
套接字编程在实际应用中的优势
套接字编程在网络编程中拥有广泛的应用,包括:
* **Web 应用程序:**HTTP 服务器和客户端使用套接字在 Web 浏览器和服务器之间交换数据。
* **数据库连接:**数据库管理系统使用套接字与客户端应用程序通信。
* **文件传输:**FTP 服务器和客户端使用套接字传输文件。
* **多玩家游戏:**在线游戏使用套接字在玩家之间同步游戏状态。
掌握 Linux 套接字编程为开发高效、可靠的网络应用程序奠定了坚实的基础。