查看系统中的套接字

套接字其实就是通信控制信息,或者说是存放控制信息的内存空间。

套接字也是我们传输TCP/IP数据的基础。

在Windows中查看套接字

在Windows中,我们可以使用netstat -ano命令显示套接字的内容。其中-ano选项分别表示:

  • a:不仅显示正在通信的套接字,还显示包括尚未开始通信等状态的所有套接字。
  • n:显示IP地址和端口号。
  • o:显示使用该套接字的程序PID(Process ID,进程标识符)。

下面展示了一个执行netstat -ano命令的输出示例:

Active Connections

Proto    Local Address        Foreign Address    State        PID
-----    -------------        ---------------    -----        ---
TCP      0.0.0.0:80           0.0.0.0:0          LISTENING    4
TCP      192.168.0.37:9230    58.251.100.102:80  ESTABLISHED  7164
UDP      0.0.0.0:68           *:*                             328

上面各个列头的意思分别为:

  • Proto(协议):协议类型,使用TCP/IP协议通信的情况下,会显示TCP或UDP。
  • Local Address(本地地址):执行netstat命令的计算机本身(本地端)的IP地址和端口号。如果计算机安装了多块网卡,则会显示出多个IP地址。0.0.0.0表示不绑定IP地址。
  • Foreign Address(外部地址):通信对象(远程端)的IP地址和端口号。0.0.0.0表示还没有开始通信,没有绑定IP地址和端口号。此外,UDP协议中的套接字不绑定对方的地址和端口,因此显示*:*
  • State(状态):表示通信状态,LISTENING是等待对方连接,ESTABLISHED是完成连接并正在进行数据通信。
  • PID(Process ID,进程标识符):使用该套接字的程序PID。

接下来,我们来看看上面输出示例都是什么意思吧。比如:

  • 第1行,它表示PID为4的程序正在139端口等待另一方的TCP协议连接,其中本地IP地址和远程IP地址都是0.0.0.0,这表示通信还没有开始,IP地址不确定。
  • 第2行,它表示PID为7164的程序正在使用IP地址为192.168.0.37的网卡与IP地址为58.251.100.102的对象进行TCP协议通信。
  • 第3行,它表示PID为328的程序正在68端口等待另一方的连接,因为这里使用的是UDP协议,而UDP协议中的套接字不绑定对方的地址和端口,因此显示*:*

浏览器、邮件等一般应用程序收发数据时用TCP;
DNS查询等收发较短的控制数据时用UDP。

在Linux中查看套接字

在Linux中查看套接字与Windows中非常类似,只是netstat命令中的o选项换成p

在Linux中查看套接字的命令为netstat -anp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要关闭套接字,在Linux系统,可以使用close()函数来关闭套接字。close()函数会终止与套接字的连接,并释放与套接字相关的资源。在调用close()函数之前,需要先使用socket()函数创建套接字,然后使用connect()函数建立连接。接下来,通过调用close()函数来关闭套接字。 以下是关闭套接字的步骤: 1. 首先,使用socket()函数创建套接字。可以使用下列代码示例创建套接字: ```c int sockfd = socket(domain, type, protocol); ``` 其,domain是协议族,type是套接字类型,protocol是协议。例如,使用AF_INET和SOCK_STREAM参数创建一个TCP套接字。 2. 使用connect()函数建立与目标主机的连接。例如: ```c struct sockaddr_in serveraddr; memset(&serveraddr, 0, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(port); serveraddr.sin_addr.s_addr = inet_addr(ip); int conn = connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr)); ``` 其,port是目标主机的端口号,ip是目标主机的IP地址。 3. 使用close()函数关闭套接字。例如: ```c close(sockfd); ``` 这将终止与套接字的连接,并释放与套接字相关的资源。 需要注意的是,在使用完套接字后,应该及时关闭套接字,以释放资源并避免资源泄露。<span class="em">1</span> #### 引用[.reference_title] - *1* [Linux进程间通信——使用流套接字](https://download.csdn.net/download/weixin_38692202/14893541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值