套接字编程入门
1. 套接字概述
套接字(Socket)是用于网络通信的端点。通过套接字,程序可以通过网络发送和接收数据。了解套接字编程的基础知识是进行网络编程的第一步。
1.1 套接字的类型
- 流套接字(
SOCK_STREAM
):基于TCP协议,提供可靠的双向字节流。 - 数据报套接字(
SOCK_DGRAM
):基于UDP协议,提供无连接的、尽力而为的服务。
1.2 套接字的基本概念
- IP地址:标识网络上的每个设备,例如
192.168.1.1
。 - 端口号:每个服务在某台设备上使用的数字标识,例如
80
(HTTP服务)。 - 地址族:通常是
AF_INET
(IPv4)或AF_INET6
(IPv6)。
2. 套接字编程基础
2.1 创建一个套接字
要使用套接字,首先需要创建一个套接字,让我们用TCP作为例子。
1 |
|
2.2 绑定套接字
绑定套接字将它与特定的IP地址和端口关联。
1 | struct sockaddr_in server_addr; |
2.3 监听连接
在套接字上监听连接请求。
1 | listen(sockfd, 5); // 最多5个挂起的连接请求 |
2.4 接受连接
接受来自客户端的连接。
1 | int newsockfd; |
3. 数据收发
3.1 发送数据
使用 send
函数发送数据给客户端。
1 | const char *msg = "Hello from server!"; |
3.2 接收数据
使用 recv
函数接收数据。
1 | char buffer[256]; |
4. 关闭套接字
在程序结束之前关闭所有打开的套接字。
1 | close(newsockfd); |
5. 完整示例代码
下面是一个简单的回显服务器的完整示例代码:
1 |
|
6. 总结
本节介绍了C语言中的基本套接字编程,包括创建套接字、绑定、监听、接受连接以及数据的发送和接收。通过实际示例,你可以建立一个简单的服务器与客户端进行通信。进一步的内容可以扩展到并发处理、多客户端支持等高级主题。