c代码示例socket接收报文并处理
时间: 2023-10-04 20:02:10 浏览: 64
以下是一个示例的C代码用于接收报文并进行处理:
```c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#define BUFFER_SIZE 1024
int main() {
int serverSocket, clientSocket;
struct sockaddr_in serverAddr, clientAddr;
socklen_t addrLen;
char buffer[BUFFER_SIZE];
int bytesRead;
// 创建socket
serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket < 0) {
perror("无法创建socket");
exit(1);
}
// 绑定IP地址和端口号
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
serverAddr.sin_port = htons(8080);
if (bind(serverSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0) {
perror("绑定失败");
exit(1);
}
// 监听socket
if (listen(serverSocket, 5) < 0) {
perror("监听失败");
exit(1);
}
printf("等待客户端连接...\n");
// 接受客户端连接
addrLen = sizeof(clientAddr);
clientSocket = accept(serverSocket, (struct sockaddr *)&clientAddr, &addrLen);
if (clientSocket < 0) {
perror("无法接受客户端连接");
exit(1);
}
printf("客户端已连接\n");
// 接收报文
bytesRead = read(clientSocket, buffer, BUFFER_SIZE - 1);
if (bytesRead < 0) {
perror("读取报文失败");
exit(1);
}
buffer[bytesRead] = '\0';
printf("收到报文: %s\n", buffer);
// 对报文进行处理
// ...
// 关闭socket
close(clientSocket);
close(serverSocket);
printf("连接已关闭\n");
return 0;
}
```
以上代码实例化了一个服务器端的socket,监听端口号8080,并在接收到客户端连接后接收报文并打印出来。你可以在"对报文进行处理"的部分对报文进行任何你想要的操作,例如解析数据、发送响应等。
阅读全文