socket编程Transport endpoint is not connected错误总结
前言
最近使用C++网络编程,计划实现一个web服务(模拟http请求、支持host模式)。刚接触犯了一个低级的通信错误,导致Transport endpoint is not connected。
原因分析
在server端accept一个新的连接后返回一个文件描述符(这里就叫connect_fd),但这个文件描述符有区别于初始化socket的listen_fd文件描述符。在read函数的时候错误将listen_fd传入到函数中,最终导致Transport endpoint is not connected错误。
# read读取数据过程
while(true){
if((nread = read(connect_fd, ptr, nleft)) < 0){
}
}
# accept函数 使用的是
int accept(int listen_fd, struct sockaddr *cliaddr, socklen_t *addrlen);