为了账号安全,请及时绑定邮箱和手机立即绑定

如下所示,请问在linux下socket编程中close()函数?

如下所示,请问在linux下socket编程中close()函数?

眼眸繁星 2021-10-19 19:15:30
在socket编程中 建立一个描述符socket_fdclose(socket_fd);后 该描述符所对应的结构体的内容是否也一起被释放。如果没有被释放 那我可不可以重新把该描述符的值(close前把值已经用变量保存起来了)赋值给 socket_fd继续使用???望大虾们 帮帮忙?那可不可以这样呢:int socket_fd = socket(..);int socket_x = socket_fd;close(socket_fd);int socket_fd2 = socket(..);socket_fd2 = socket_x;再使用socket_fd2会出现什么问题如果这样会出现什么样的问题..?那我想在一个主进程里建立多个socket如:int socket1 = socket(..);int socket2 = socket(..);int socket3 = socket(..);为了程序的需要会关闭其中几个socket然后再进行连接如:close (socket1);close (socket2);然后再颠倒顺序重新建立: socket2 = socket();socket1 = socket();但是发现 新建立的两个socket描述的值符居然相同:这是怎么回事??哪位大虾 给说说..
查看完整描述

2 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

只要不用close或fclose,不管把这个socket_fd值存到哪里,都可以使用。比如:
int socket_fd = socket(...);
int socket_x = socket_fd;
那么send(socket_x)和send(socket_fd)结果完全一致

查看完整回答
反对 回复 2021-10-24
?
侃侃无极

TA贡献2051条经验 获得超10个赞

一、基本socket函数
Linux系统是通过提供套接字(socket)来进行网络编程的。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也有一个类似于打
开文件的函数:socket(),调用socket(),该函数返回一个整型的socket的描述符,随后的连接建立、数据传输等操作也都是通过该socket实现。
1、socket函数
syntax:
int socket(int domain, int type, int protocol);
功能说明:
调用成功,返回socket文件描述符;失败,返回-1,并设置errno
参数说明:
  domain指明所使用的协议族,通常为PF_INET,表示TCP/IP协议;
  type参数指定socket的类型,基本上有三种:数据流套接字、数据报套接字、原始套接字
  protocol通常赋值"0"。
  两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。socket数据结构中包含这五种信息。
2、bind函数
syntax:
int bind(int sock_fd,struct sockaddr_in *my_addr, int addrlen);
功能说明:
将套接字和指定的端口相连。成功返回0,否则,返回-1,并置errno.



查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信