成都本地电信节点,低延迟高稳定性,优质网络环境,企业专属云服务
Linux系统中的Socket编程
发布时间:2023-05-12 08:45
阅读量:783
Linux 系统中的 Socket 编程
Socket 是一种在网络中,进行进程间通信或者网络通信的方式。在 Linux 系统中,Socket 被广泛应用于网络通信领域,是开发网络应用软件的重要组件之一。
Socket 编程基础
Socket 编程是基于传输层 TCP/IP 协议而展开的,主要涉及到一些概念和函数的使用,下面对基础进行简要介绍。
概念
Socket 通信是一种面向连接的通信方式,它是通过套接字(Socket)来实现的。
套接字定义了通信的一些基本参数,包括地址族、套接字类型、协议类型、监听的网络接口等。
函数
- socket(): 创建一个套接字
- bind(): 绑定套接字到一个地址
- listen(): 开始监听客户端连接
- accept(): 接受连接请求并返回一个新的套接字
- connect(): 与服务器建立连接
- send(), recv(): 发送和接收数据
- close(): 关闭套接字
Socket 编程实践
下面通过一个简单的 Server-Client 示例来展示基本的 Socket 编程实现。
Server 端代码
#include <sys/socket.h> #include <netinet/in.h> int main(){ // 创建 socket int sock_fd = socket(AF_INET, SOCK_STREAM, 0); // 绑定端口 struct sockaddr_in server_address; server_address.sin_family = AF_INET; server_address.sin_port = htons(8080); server_address.sin_addr.s_addr = INADDR_ANY; bind(sock_fd, (struct sockaddr *)&server_address, sizeof(server_address)); // 监听连接 listen(sock_fd, 5); // 接受连接请求 struct sockaddr_in client_address; int client_fd = accept(sock_fd, (struct sockaddr *)&client_address, NULL); // 发送数据 char *message = "Hello, Client!"; send(client_fd, message, strlen(message), 0); // 关闭套接字 close(client_fd); close(sock_fd); }
Client 端代码
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(){ // 创建 socket int sock_fd = socket(AF_INET, SOCK_STREAM, 0); // 连接服务器 struct sockaddr_in server_address; server_address.sin_family = AF_INET; server_address.sin_port = htons(8080); inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr); connect(sock_fd, (struct sockaddr *)&server_address, sizeof(server_address)); // 接收数据 char buffer[1024]; recv(sock_fd, buffer, 1024, 0); printf("%s\n", buffer); // 关闭套接字 close(sock_fd); }
总结
Socket 编程是在网络通信领域中应用最广泛的编程方式之一,是 Linux 开发者必备的基础知识之一。本文简要介绍了 Socket 编程的概念、相关函数的使用,以及通过一个简单的 Server-Client 示例展示了 Socket 编程的基本实现。