小编inc*_*cud的帖子

如何避免服务器套接字的TIME_WAIT?

我知道你会把它掩盖为重复(问题1,问题2,问题3),但答案不是我正在寻找的(我认为也是其他人).
所以,我指的是socket master(我爱你们):如果我关闭套接字怎么能得到绑定错误(地址已经在使用中)?
我会描述我的问题.

我有一个与服务器 通信的客户端
在服务器中,我有两个套接字:sockS(主套接字,监听)和sockTX(客户端一个)
如果我调用我的程序一次,通信没问题,那么我关闭两个套接字
如果我记得服务器和客户端,我得到错误,我要等待TIME_WAIT(在Ubuntu 32bit上约3分钟)

为什么,在关闭两个套接字之后我仍然会遇到绑定错误?
有一种方法可以使它无任何魔法(SO_REUSEADDR)吗?
我知道我的代码中有些错误...

谢谢大家.

那是代码:
客户端

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <netdb.h>
#include <unistd.h>
#include <arpa/inet.h>

#define PORT 5000
#define SERVER "127.0.0.1"
#define MAXLINE 128

int printMessage(char* str);

int main(){
char buff[MAXLINE+1];

struct sockaddr_in server, client;
struct hostent *host;
int sock, n;
//socklen_t len;

    if((sock = socket(AF_INET,SOCK_STREAM,0)) == …
Run Code Online (Sandbox Code Playgroud)

c sockets linux

5
推荐指数
1
解决办法
6955
查看次数

系统调用“open”无法创建带有 O_CREAT 标志的文件

我必须使用 Linux 的系统调用完成一个练习:

  1. 打开文件“testinput.txt”(已存在于工作目录中,不为空)
  2. 打开文件“testoutput.txt”(工作目录中不存在)
  3. 将 testinput 的内容复制到 testoutput 中
  4. 关闭两个文件

我发现我可以使用系统调用打开文件,open既可以打开输入文件(flag O_RDONLY)又可以打开输出文件(flag O_CREAT | O_WRONLY)。

输入文件工作正常。输出文件没有。

Errno 表示代码 2 =“没有这样的文件或目录”(显然,我要求创建该文件)。我究竟做错了什么?

PS:为了强调我正在使用系统调用,我不是在调用函数,open(...)而是syscall(SYS_OPEN, ...)

outFileDesc = syscall(SYS_OPEN, "testoutput.txt", O_WRONLY | O_TRUNC | O_CREAT, 438);
if(outFileDesc == -1) {
    int code = errno;

    // gdb used here -> print code -> 2

    char str[] = "Unable to open \"testoutput.txt\"\n";
    syscall(SYS_WRITE, FILE_DESC_STDOUT, str, sizeof(str)/sizeof(char));
    syscall(SYS_CLOSE, inFileDesc);
    syscall(SYS_EXIT, 1);
    return 1;   
}
Run Code Online (Sandbox Code Playgroud)

整个代码:

#include <unistd.h>
#include <sys/syscall.h> …
Run Code Online (Sandbox Code Playgroud)

c linux system-calls

3
推荐指数
1
解决办法
4335
查看次数

Scala,使用typelevel的代数定义一个点阵

前提:我是Scala的新手

我想在数学意义上定义一个(半)格子:一个部分顺序,其中每两个元素都有一个连接或supremium.元素不必是数字,但您必须定义部分顺序关系.

我需要构建的格子是这样的():

    Grandparent
    |        |
    v        v
Parent     Uncle
    |
    v 
Children
Run Code Online (Sandbox Code Playgroud)

其中Children < Parent,Parent < Grandparent,Uncle < Grandparent但不是Children < Uncle.

我从Typelevel的代数库中找到了特征BoundedLattice.是否可以使用此库来指定此结构?

scala algebra

2
推荐指数
1
解决办法
163
查看次数

标签 统计

c ×2

linux ×2

algebra ×1

scala ×1

sockets ×1

system-calls ×1