首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

accept的Invalid Argument异常

2012-10-19 
accept的Invalid Argument错误在编写socket程序的时候,遇到一个奇怪的问题,服务端用accept接收请求,客户端

accept的Invalid Argument错误

在编写socket程序的时候,遇到一个奇怪的问题,服务端用accept接收请求,客户端通过telnet连接上去。结果每次连上去以后连接又立即断开了,而server端accept以后并没有close连接。

?

代码如下:

/*server*/int main(){//...socklen_t cli_len;struct sockaddr_in clientaddr;while(1){int connfd = accept(listenfd, (struct sockaddr *)&clientaddr, &cli_len);if(connfd < 0){perror("accept");}//...}return 0;}

?最后发现是初始化的问题,cli_len和clientaddr不能为负值,因为上面没有初始化,所以在accept的时候会出问题。最后加上初始化的代码,问题就解决了。

/*server*/int main(){//...socklen_t cli_len;struct sockaddr_in clientaddr;while(1){memset(&clientaddr, 0, sizeof(struct sockaddr_in));cli_len = 1;int connfd = accept(listenfd, (struct sockaddr *)&clientaddr, &cli_len);if(connfd < 0){perror("accept");}//...}return 0;}
?

热点排行