创建原始套接字客户端以连接到Web主机

问题描述

我想编写一个原始套接字,以使其连接到特定端口上的网站并检索该网站具有的所有信息:

到目前为止,我已经编写了代码,但是不确定在哪里输入主机名和端口信息(例如:abc.xyz.com:8096)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


void dump(const unsigned char *data_buffer,const unsigned int length);

int main (void)
{

    int i,recv_length,fd;
  u_char buffer[10000];
  if((fd = socket(AF_INET,SOCK_RAW,IPPROTO_TCP))==-1)
     perror("-1 Return \n");
  for(i=0;i<3;i++){
    recv_length = recv(fd,buffer,10000,0);
    printf("Got a %d byte packet\n",recv_length);
    dump(buffer,recv_length);  
    
}
}

void dump(const unsigned char *data_buffer,const unsigned int length) {
   unsigned char byte;
   unsigned int i,j;
   for(i=0; i < length; i++) {
     byte = data_buffer[i];
     printf("%02x ",data_buffer[i]); 
     if(((i%16)==15) || (i==length-1)) {
       for(j=0; j < 15-(i%16); j++)
       printf(" ");
       printf("| ");
        for(j=(i-(i%16)); j <= i; j++) { 
         byte = data_buffer[j];
         if((byte > 31) && (byte < 127)) 
         printf("%c",byte);
     else
      printf(".");
     }
     printf("\n"); 
    } 
   } 
}

tcp转储后,我也遇到了分段错误。不确定如何解决此问题,但主要问题是在哪里定义我要连接的主机名和端口

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)