溫馨提示×

linux如何監(jiān)聽端口接收數(shù)據(jù)

小億
249
2023-11-08 14:30:27
欄目: 智能運維

在Linux上監(jiān)聽端口并接收數(shù)據(jù)可以使用以下幾種方式:

  1. 使用socket編程:可以使用C、C++等編程語言調(diào)用Linux系統(tǒng)提供的socket API,在指定端口上創(chuàng)建一個socket,然后使用recv函數(shù)接收數(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;
}
  1. 使用netcat命令行工具:netcat是一個功能強大的網(wǎng)絡工具,可以用于創(chuàng)建TCP/UDP連接、監(jiān)聽端口等。使用以下命令可以監(jiān)聽指定端口并打印接收到的數(shù)據(jù):
nc -l 1234
  1. 使用ncat命令行工具:ncat是netcat的改進版,具有更多功能和更好的性能。使用以下命令可以監(jiān)聽指定端口并打印接收到的數(shù)據(jù):
ncat -l 1234

以上是三種常見的方式,你可以根據(jù)自己的需求選擇適合的方法來監(jiān)聽端口并接收數(shù)據(jù)。

0