在编写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;
}
分享到:
相关推荐
Invalid Command Line Argument(解决方案).md
InvalidArgument-The argument is invalid(解决方案).md
标题中的“apache启动报 shmget() failed: Invalid argument”是一个典型的Apache服务器启动错误,这个问题通常与系统级别的共享内存设置有关。下面将详细解释这个错误的原因、影响以及如何解决。 首先,`shmget()`...
Invalid Argument(解决方案).md
Invalid Argument(亲测可用).md
invalid argument解决方案(亲测可用)
TypeError: ‘required’ is an invalid argument for positionals 的解决方法 当我在使用argparse模块时,遇到了如下错误: import argparse parser = argparse.ArgumentParser(description = 'debug_example') ...
在进行电子设计自动化(EDA)软件Protel 99 SE的操作过程中,用户可能会遇到一个常见的错误提示:“format ' x' invalid or incompatible with argument”。这一错误往往出现在尝试将某个文件格式转换为Protel能够...
### 错误解析与解决方案:Format ' x' Invalid or Incompatible with Argument 在使用Protel 99进行PCB设计时,可能会遇到“format ' x' invalid or incompatible with argument”这样的错误提示。这一错误通常出现...
本文实例讲述了Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’: Invalid argument的解决方法。分享给大家供大家参考,具体如下: 【错误】 模拟器无法启动,报错:Cannot set up guest...
标题中的“protel.99 format '%x' invalid or incompatible with argument打软体报错补丁.rar”指的是Protel 99软件在运行时遇到了一个格式错误,具体表现为使用`%x`格式化字符串与传入的参数不兼容。这通常出现在C/...
在C++编程中,`std::invalid_argument` 是一个异常类,用于表示当函数或方法接收到不合法或无效的参数时抛出的错误。这个类是`std::logic_error` 的子类,而`std::logic_error` 又是`std::exception` 的子类。`std::...
标题中的问题“protel 99se :format %x invalid or incompatible with argument”是一个常见的错误提示,通常在尝试运行或安装Protel 99SE软件时出现。这个错误表明程序在处理某种格式化字符串(%x)时遇到了不兼容...
多番查找发现: 原来是不符合Windows系统文件命名规则! 如下:1、 允许文件或者文件夹名称不得超过255个字符; 2、 文件名除了开头之外任何地方都可以使用空格; 3、 文件名中不能有下列符号:“?...