博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用socket写一个tcp客户端
阅读量:2061 次
发布时间:2019-04-29

本文共 1858 字,大约阅读时间需要 6 分钟。

原理大家都懂

环境

  • ubuntu14.04
    直接上代码
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[]){ int sockfd; char recvbuffer[1024*4]; // char buffer[1024]; struct sockaddr_in server_addr; struct hostent *host; int portnumber, nbytes; int i = 0; char *t; char send_buffer[] = "GET / HTTP/1.1\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36\r\n\r\n"; if (argc != 3) { fprintf(stderr, "Usage :%s hostname portnumber\a\n", argv[0]); exit(1); } if ((host = gethostbyname(argv[1])) == NULL) { herror("Get host name error\n"); exit(1); } printf("h_name: %s\n", host->h_name); //IP地址 for (; host->h_addr_list[i]; i++) { printf("IP addr %d: %s\n", i + 1, inet_ntoa(*(struct in_addr *)host->h_addr_list[i])); } if ((portnumber = atoi(argv[2])) < 0) { fprintf(stderr, "Usage:%s hostname portnumber\a\n", argv[0]); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { fprintf(stderr, "Socket Error:%s\a\n", strerror(errno)); exit(1); } bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(portnumber); server_addr.sin_addr = *((struct in_addr *)host->h_addr_list[0]); if (connect(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1) { fprintf(stderr, "Connect error:%s\n", strerror(errno)); exit(1); } printf("Request:\n%s",send_buffer); send(sockfd, send_buffer, strlen(send_buffer), 0); recv(sockfd, recvbuffer, sizeof(recvbuffer), 0); t = strstr(recvbuffer,"\r\n\r\n"); *t = (char)0; printf("\nResponse:\n%s\n", recvbuffer); close(sockfd); exit(0);}

编译

gcc -o tcp_client tcp_client.c

运行

./tcp_client www.baidu.com 80

输入了http请求头部和响应头

运行结果

转载地址:http://xrqlf.baihongyu.com/

你可能感兴趣的文章
中小型园区网络的设计与实现 (一)
查看>>
别人的难题,就是你的价值。
查看>>
中小型园区网络的设计与实现 (二)
查看>>
中小型园区网络的设计与实现 (三)
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
01. 开篇:组建小型局域网
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
04. 交换机的端口聚合配置
查看>>
05. 交换机划分Vlan配置
查看>>
06. 三层交换机实现VLAN间路由
查看>>
07. 快速生成树协议
查看>>
08. 路由器的基本配置和Talent配置
查看>>
09. 路由器单臂路由配置
查看>>
10. 路由器静态路由配置
查看>>
路由器动态ip获取不到的处理办法
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
giuhub搭建及常用操作
查看>>
phpStudy安装yaf扩展
查看>>