C 语言实现 Windows 下 Socket 编程 udp
时间: 2024-09-10 14:10:37 浏览: 44
在 Windows 环境下使用 C 语言编写 UDP(用户数据报协议)Socket 应用,你需要包含 `<winsock2.h>` 和 `<ws2tcpip.h>` 头文件,因为它们包含了 Windows Socket API 的定义。以下是基本步骤:
1. 初始化 Winsock库:
```c
#include <winsock2.h>
#include <ws2tcpip.h>
int main() {
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
// 处理初始化失败的错误
}
}
```
2. 创建套接字(UDP socket):
```c
SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (sock == INVALID_SOCKET) {
// 处理创建套接字失败的错误
}
```
3. 设置本地端口和地址:
```c
struct sockaddr_in serverAddr;
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); // 对于所有接口
serverAddr.sin_port = htons(<your port number>);
bind(sock, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
```
4. 发送和接收数据:
发送:
```c
char message[] = "Hello, UDP!";
sendto(sock, message, strlen(message) + 1, 0,
(struct sockaddr*)&clientAddr, sizeof(clientAddr));
```
接收:
```c
struct sockaddr_in clientAddr;
socklen_t addrLen = sizeof(clientAddr);
char buffer[1024];
recvfrom(sock, buffer, sizeof(buffer), 0, &clientAddr, &addrLen);
```
5. 关闭套接字并清理资源:
```c
close(sock);
WSACleanup();
return 0;
```
阅读全文