✍个人博客:https://blog.csdn.net/Newin2020?type=blog
📣专栏地址:http://t.csdnimg.cn/fYaBd
📚专栏简介:在这个专栏中,我将会分享 C++ 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
📝推荐参考地址:https://www.xiaolincoding.com/(这个大佬的专栏非常有用!)
154. Socket 能不能模拟 HTTP?
可以。因为 Socket 是传输层与应用层通信的中间软件抽象层,可以通过 Socket 按照 HTTP 请求报文的格式模拟 HTTP 请求并发送出去,来实现伪 HTTP 协议的目的。
155. 网络编程中,如何去掉 TIME_WAIT 时间
函数说明:
#include <sys/types.h>
#include <sys/socket.h>
/*
* sockfd: 标识一个套接口的描述字
* level: 选项定义的层次;支持SOL_SOCKET, IPPROTO_TCP, IPPROTO_IP, IPPROTO_IPV6
* optname: 设置的选项
* optval: 指针,指向存放选项待设置的新值的缓冲区
* optlen: optval缓冲区长度
*/
int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);
使用方法:
#include <sys/types.h>
#include <sys/socket.h>
/*
* 去掉 Time_Wait状态,否者在1分钟内绑定不了地址
* tmp 必须是 int,不然会失败
*
* 成功返回0,失败返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。
*/
int tmp = 1;
if(setsockopt(sock_fd, SOL_SOCKET, SO_REUSEADDR, &tmp, sizeof(tmp))) dbge();
156. connect 方法会阻塞,请问有什么方法可以避免其长时间阻塞?
最通常的方法最有效的是加定时器;也可以采用非阻塞模式。
或者考虑采用异步传输机制,同步传输与异步传输的主要区别在于同步传输中,如果调用 recvfrom 后会一致阻塞运行,从而导致调用线程暂停运行;异步传输机制则不然,会立即返回。