最近项目开发用到socket,socket能进行ip连接我知道,但是如果服务端提供的是“带参数的url”要怎么处理呢?
有大神指导下不?
有大神指导下不?
解决方案 »
- 求解答linux中安装mysql-5.7.20-linux-glibc2.12-x86_64出错
- Ubuntu安装的软件找不到在哪
- Linux PDF电子书学习教程文档大分享!!!!
- 初学者在Openfoam安装过程中遇到了难题!求大神帮忙,以解燃眉之急!。
- 关于PCIE驱动移植的问题
- nginx运行php文件显示File not found.
- 有人用onvif 开发过摄像头吗?获取rtps流地址那些或者播放摄像头
- Linux登录微信遇到问题求助
- 新加LVM挂到了根目录,而且VGNAME和根目录取了一样的名字,怎么安全卸载?
- 救救孩子吧,关于rpm包的安装问题
- Linux如何查看进程的具体信息,如:域名、IP、java文件名
- 求助:外网不能访问LAMP架设的网站(局域网可以访问)
struct hostent *he;
he = gethostbyname( argv[1]);
char destIP[128];
char **phe = NULL;
for( phe=he->h_addr_list ; NULL != *phe ; ++phe){
inet_ntop(he->h_addrtype,*phe,destIP,sizeof(destIP));
printf("%s\n",destIP);
这样的话只是单纯的得到ip地址,那url的参数呢?怎么处理
没有任何必要去手写这一套东西。
没有任何必要去手写这一套东西。
建议用适合的工具去做适合的事。你的需求可以用http服务器来实现。要么自己写一个http server,要么直接换一个web开发环境。
HTTP本质上还是文本通信(在部分场景里会传输二进制数据),正常的流程是:客户端(浏览器、开发环境里的web client等等)向服务器发送Http请求,服务器处理以后返回Http响应。
http请求可以去搜它的结构,就是纯文本,第一部分:请求类型、URI、协议 (比如GET/sample.jsp HTTP/1.1);第二部分:请求头部,里面有很多约束或者预置变量定义;第三部分就是请求的正文部分。类似地,http响应也有自己的格式定义,包含了状态码,响应头,响应正文。
你的例子当中:
https://docs.microsoft.com 位于第二部分,Host变量中;
/zh-cn/dotnet/api/system.security.cryptography.rsacryptoserviceprovider位于第一部分,在URI部分;
redirectedfrom=MSDN&view=netframework-4.8 位于第三部分正文中。
事实上,如果不是为了学习目的想自己尝试实现一下,手写http服务器是很不明智的行为(从你问的问题来看,肯定不是因为学习目的)。
socket在80端口侦听,收到文本了,判断它是不是合法的http请求(通过确认收到的文本是否符合第一部分的格式要求),然后从三个部分中摘取出你要的内容,处理完,拼出一个符合标准的http响应消息发送回去。另外,如果你是https协议,还需要自己实现https通信的加密过程。
更合适的做法是,涉及到http服务,使用php、python、.Net、JAVA这些合适的工具去写一个WEB工程,然后部署到apache、tomcat、IIS、NGINX之类的web服务器中,而非用c去手写一个web服务端来实现。
现有的项目中有http协议端口,不过只能进行短连接,现需求实现长连接,所以想弄socket来实现这个功能。我这端是客户端来的