在Linux上監(jiān)聽端口并接收數(shù)據(jù)可以使用以下幾種方式:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
int main()
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0); // 創(chuàng)建socket
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(1234); // 監(jiān)聽的端口號
bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)); // 綁定地址和端口
listen(sockfd, 5); // 開始監(jiān)聽
while (1) {
int newsockfd = accept(sockfd, NULL, NULL); // 接受連接
char buffer[1024];
int len = recv(newsockfd, buffer, sizeof(buffer), 0); // 接收數(shù)據(jù)
printf("Received: %s\n", buffer);
close(newsockfd); // 關閉連接
}
close(sockfd); // 關閉socket
return 0;
}
nc -l 1234
ncat -l 1234
以上是三種常見的方式,你可以根據(jù)自己的需求選擇適合的方法來監(jiān)聽端口并接收數(shù)據(jù)。