vxworks套接字使用例子
时间: 2023-08-24 14:04:52 浏览: 50
以下是一个简单的 VxWorks 套接字使用例子,用于在本地机器上创建一个 TCP 服务器:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#define PORT_NUM 8080
#define BUF_SIZE 1024
void handle_client(int client_socket) {
char buf[BUF_SIZE];
memset(buf, 0, sizeof(buf));
int n;
while ((n = read(client_socket, buf, sizeof(buf))) > 0) {
printf("Received message: %s\n", buf);
write(client_socket, buf, n);
memset(buf, 0, sizeof(buf));
}
close(client_socket);
}
int main() {
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
if (server_socket < 0) {
perror("Failed to create socket");
exit(EXIT_FAILURE);
}
int option = 1;
if (setsockopt(server_socket, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option)) < 0) {
perror("Failed to set socket option");
exit(EXIT_FAILURE);
}
struct sockaddr_in server_addr = {0};
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(PORT_NUM);
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("Failed to bind socket to address");
exit(EXIT_FAILURE);
}
if (listen(server_socket, 5) < 0) {
perror("Failed to listen for connections");
exit(EXIT_FAILURE);
}
printf("Waiting for connections...\n");
struct sockaddr_in client_addr = {0};
socklen_t client_addr_len = sizeof(client_addr);
while (1) {
int client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &client_addr_len);
if (client_socket < 0) {
perror("Failed to accept connection");
exit(EXIT_FAILURE);
}
printf("Accepted connection from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
handle_client(client_socket);
}
return 0;
}
```
这个例子创建了一个 TCP 服务器,绑定到本地机器的 8080 端口,然后等待客户端连接。一旦连接建立,服务器会接收客户端发送的消息并将其原封不动地发送回客户端。