linux搭建c语言服务器(socket)
时间: 2023-09-23 19:11:08 浏览: 103
要在Linux上搭建一个C语言服务器(使用Socket通信),可以参考以下步骤:
1. 安装所需软件包:gcc、make和netcat(nc)。
```
sudo apt-get install gcc make netcat
```
2. 创建一个C语言程序,实现服务器的逻辑。以下是一个简单的示例程序,监听端口号为8888,接收客户端发送的消息并将其打印到控制台上:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 8888
int main(int argc, char const *argv[]) {
int server_fd, new_socket, valread;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[1024] = {0};
char *hello = "Hello from server";
// 创建socket文件描述符
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
// 设置socket选项
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
perror("setsockopt");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(PORT);
// 绑定socket到指定的地址和端口号
if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
// 监听socket
if (listen(server_fd, 3) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
// 接受客户端连接并处理请求
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
valread = read(new_socket, buffer, 1024);
printf("%s\n", buffer);
send(new_socket, hello, strlen(hello), 0);
printf("Hello message sent\n");
return 0;
}
```
3. 使用makefile编译程序。
创建一个名为makefile的文件,内容如下:
```makefile
CC = gcc
CFLAGS = -Wall
all: server
server: server.c
$(CC) $(CFLAGS) server.c -o server
clean:
rm -f server
```
使用以下命令进行编译:
```
make all
```
4. 运行服务器程序。
使用以下命令运行服务器程序:
```
./server
```
5. 使用nc命令测试服务器。
打开一个新的终端窗口,使用以下命令连接到服务器:
```
nc localhost 8888
```
在nc窗口中输入一些文本,按Enter键发送。你应该会在服务器的控制台上看到接收到的消息,并在nc窗口中看到服务器返回的“Hello from server”消息。
这就是在Linux上搭建C语言服务器(使用Socket通信)的简单步骤。
阅读全文