我设法制作了一个可重现的示例(保留了我的大型原始源代码中的所有内容)。问题是只a发送了第一封信。然后,我明白了send() failed: Connection refused。我不知道该怎么做,这实际上是应该起作用的最小代码。
我应该说,只有当我在程序开始时打开套接字一次并在程序结束时关闭它时,代码才不起作用。如果我为每个单独的 send() 打开一个套接字,然后立即关闭它,则不会出现错误。
#include <pcap.h>
#include <cstdio>
#include <getopt.h>
#include <cstring>
#include <cstdlib>
#include <string>
#include <iostream>
#include <map>
#include <vector>
#define BUFSIZE 256
#define __FAVOR_BSD
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include<netdb.h>
#include<err.h>
#include <arpa/inet.h>
#include <netinet/ether.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <netinet/ip_icmp.h>
#include <netinet/icmp6.h>
using namespace std;
#define BUFFER 1024 // buffer length
int sock; // socket descriptor
void start_connection(){
struct sockaddr_in server, from; …Run Code Online (Sandbox Code Playgroud)