linux网络编程 代码应该怎么写
时间: 2024-01-22 10:26:22 浏览: 80
网络编程在Linux中可以使用多种编程语言进行实现,比较常用的有C和Python。下面是一个简单的C语言示例,演示了如何在Linux下进行基本的网络编程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 12345
#define BUFFER_SIZE 1024
int main() {
int sockfd, newsockfd;
socklen_t cli_len;
char buffer[BUFFER_SIZE];
struct sockaddr_in serv_addr, cli_addr;
int n;
// 创建socket
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror("Error opening socket");
exit(1);
}
// 初始化服务器地址结构
memset((char *)&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(PORT);
// 绑定socket到指定端口
if (bind(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
perror("Error on binding");
exit(1);
}
// 监听连接
listen(sockfd, 5);
printf("Listening on port %d...\n", PORT);
cli_len = sizeof(cli_addr);
// 接受连接
newsockfd = accept(sockfd, (struct sockaddr *)&cli_addr, &cli_len);
if (newsockfd < 0) {
perror("Error on accept");
exit(1);
}
// 读取客户端发送的数据
memset(buffer, 0, BUFFER_SIZE);
n = read(newsockfd, buffer, BUFFER_SIZE);
if (n < 0) {
perror("Error reading from socket");
exit(1);
}
printf("Received message: %s\n", buffer);
// 向客户端发送响应
n = write(newsockfd, "Server received your message", 27);
if (n < 0) {
perror("Error writing to socket");
exit(1);
}
close(newsockfd);
close(sockfd);
return 0;
}
```
这是一个简单的服务器端代码,它监听指定的端口并接受客户端的连接。当客户端发送消息时,服务器会打印消息内容,并向客户端发送一个简单的响应。你可以根据自己的需求对代码进行修改和扩展。
请注意,这只是一个简单的示例代码,真实的网络编程可能需要处理更多的错误情况和异常情况,以及进行更复杂的数据交互。
阅读全文
相关推荐
















