问题描述
我想编写一个原始套接字,以使其连接到特定端口上的网站并检索该网站具有的所有信息:
到目前为止,我已经编写了代码,但是不确定在哪里输入主机名和端口信息(例如: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 (将#修改为@)