首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP套接字-如何连接到服务器套接字,然后将其关闭并再次连接?

TCP套接字-如何连接到服务器套接字,然后将其关闭并再次连接?
EN

Stack Overflow用户
提问于 2020-11-12 23:53:51
回答 1查看 37关注 0票数 0

这段代码不是100%正确,但我需要我的程序来做这样的事情。

客户端

代码语言:javascript
复制
fd = socket(AF_INET,SOCK_STREAM,0);
    if(fd==-1) exit(1);

n = connect(fd,res->ai_addr,res->ai_addrlen);
    if(n==-1) exit(1);

char buffer[128] = read(fd,buffer,128);
if(strcmp(buffer,"Done\n")==0) close(fd);

n = connect(fd,res->ai_addr,res->ai_addrlen);
    if(n==-1) exit(1);

bzero(buffer,128);
read(fd,buffer,128);
if(strcmp(buffer,"Done\n")==0) close(fd);

服务器

代码语言:javascript
复制
listenfd = socket(AF_INET,SOCK_STREAM,0);
if(listenfd == -1) exit(1);

n=bind(listenfd,res2->ai_addr, res2->ai_addrlen);
if(n==-1) exit(1);

if(listen(listenfd,10) == -1) exit(1);

while(1){
     User_fd = accept(listenfd,(struct sockaddr*)&addr2,&addrlen2);
            if(User_fd == -1){
                perror("accept");
                exit(1);
            }
     char buffer[5] = "Done\n";
     write(User_fd,buffer,5);
     close(User_fd);
}

当我第二次尝试连接时,它给我一个错误"Bad file descriptor“。每次我们需要再次连接时,我都会尝试在客户端创建一个新的套接字,但这会影响我拥有的其他套接字(使用不同的服务器),我认为这不是一件好事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-13 03:31:40

一个插座不能连接两次,无论它们之间是否关闭。相反,必须创建一个新的套接字。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64807259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档