钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读859641
首页 Linux 正文内容

linux套接字编程实例

钟逸 Linux 2024-03-15 21:51:42 39

套接字编程基础

在 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 套接字编程为开发高效、可靠的网络应用程序奠定了坚实的基础。

文章目录
    搜索