写一个Linux服务器端网络非阻塞收发程序

首先,需要使用 Linux 中的 socket API 创建一个 socket,并将其设置为非阻塞模式。然后,使用 bind() 和 listen() 将 socket 绑定到特定的 IP 地址和端口上。

在服务器端,使用 accept() 接受客户端的连接请求。如果 accept() 返回 EAGAIN 或 EWOULDBLOCK 错误,则说明此时没有可用的连接请求,程序应该继续监听。

在接受到客户端的连接请求后,可以使用 recv() 或 read() 接收客户端发送的数据,并使用 send() 或 write() 向客户端发送数据。

示例代码如下:

``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <fcntl.h>

#define PORT 4444

int main(){ int sockfd, ret; struct sockaddr_in serverAddr;

int newSocket;
struct sockaddr_in newAddr;

socklen_t addr_size;

char buffer[1024];
pid_t childpid;

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0){
    printf("[-]Error in connection.\n");
    exit(1);
}
printf("[+]Server Socket is created.\n");

memset(&amp;serverAddr, '\0', sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(PORT);
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

ret = bind(sockfd, (struct sockaddr*)&amp;serverAddr, sizeof(serverAddr));
if(ret < 0){
    printf("[-]Error in binding.\n");
    exit(1);
}
printf("[+]Bind to port %d\n", 4444);

if(listen(sockfd, 10) == 0){
    printf("[+]Listening....\n");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值