Linux socket shutdown()和close()

  • int close(int sockfd)

#include<unistd.h>
将套接字标记为关闭,尝试发送已经排队的数据,将套接字描述符减一,如果描述符为0则发送FIN触发套接字关闭

  • int shutdown(int sockfd,int how)

#include <sys/socket.h>
SHUT_RD代表关闭发送通道,还会尝试发送已经排队的数据,然后发送FIN
SHUT_WR代表关闭接收通道,如果接收到回复RST
SHUT_RDWR代表同时关闭发送结束通道
shutdown只会发送FIN不会释放套接字

时间: 2024-10-11 12:20:30

Linux socket shutdown()和close()的相关文章

linux socket网络编程 常用函数及头文件

转自:http://blog.chinaunix.net/u3/102500/showart_2065640.html 一 三种类型的套接字: 1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务.数据被看作是字节流,无长度限制.例如FTP协议就采用这种. 2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性. 3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问. 二 基本套接字系统调有有如下一

Linux Socket - 基本socket链接

0x0000 Linux Socket 函数 bind listen connect accept send recv read write 0x0001 Server绑不上ip 报错位置在bind函数 [[email protected] 01]# ./server 191.168.80.151 1588 191.168.80.151 : 1588 Bind: Cannot assign requested address port已被占用 报错位置在bind函数 [[email protec

OpenFastPath(2):原生态Linux Socket应用如何移植到OpenFastPath上?

版本信息: ODP(Open Data Plane): 1.19.0.2 OFP(Open Fast Path): 3.0.0 1.存在的问题 OpenFastPath作为一个开源的用户态TCP/IP协议栈,其对用户提供的Socket API,无论是宏定义.数据结构还是函数,均以OFP_开头.如下图所示: 1 int ofp_socket(int, int, int); 2 int ofp_socket_vrf(int, int, int, int); 3 int ofp_accept(int,

Java Socket编程以及与Linux Socket API关系

Socket 编程(基于Linux) Socket独立于具体协议的网络编程接口,在ISO模型中,主要位于会话层和传输层之间:在通用的计算机网络五层模型中,主要位于应用层和传输层之间. Linux Socket 基本上就是BSD Socket 需要使用的头文件 数据类型:#include <sys/types.h> 函数定义:#include <sys/socket.h> Socket类型 套接字是一种通信机制,通信两方的一种约定,用套接字中的相关函数来完成通信过程.根据传输内容分为

Android Jni层 创建 linux socket 出错问题解决

问题: 想在Jni层创建 udp socket 与服务端通信,但是没有成功,最后发现竟然是创建socket失败(代码如下) // create socket g_sd = socket(AF_INET, SOCK_DGRAM, 0); if (-1 == g_sd) { perror("socket()"); goto err_socket; } 解决办法: 在 AndroidManifest.xml 文件中,添加访问网络的权限: <uses-permission android

Linux socket编程的心跳机制总结

Linux socket编程的心跳机制总结 我写这篇文章的目的是想总结一下心跳机制的使用,因为最近两个项目的TCP通信中都使用了这个方法,感觉用法好诗比较经典的,所以拿出来与大家共享. 什么是心跳机制 心跳机制就是当客户端与服务端建立连接后,每隔几分钟发送一个固定消息给服务端,服务端收到后回复一个固定消息给客户端,如果服务端几分钟内没有收到客户端消息,则视客户端断开.发送方可以是客户端和服务端,看具体需求. 为什么要使用 我们都知道在TCP这种长连接情况下下,有可能有一大段时间是没有数据往来的,

linux命令--shutdown

linux命令--shutdown 名字: shutdown -关闭系统概要: shutdown[OPTION]...TIME(参数)[MESSAGE]描述: shutdown 安排系统以一个安全的方式关机.此时所有在本机上的用户都会被通知系统将被关闭在TIME的最后5分钟,新的登录将被禁止. TIME可以有不同的格式,最长见的是英文单词‘now’,它将使系统立即关机. 其他有效的格式为:+m:系统将一直等着,直到m分钟后关闭.用:hh:mm将指定为24小时制的某个时间关机. 如果没有选项[OP

Linux socket编程 DNS查询IP地址

本来是一次计算机网络的实验,但是还没有完全写好,DNS的响应请求报文的冗余信息太多了,不只有IP地址.所以这次的实验主要就是解析DNS报文.同时也需要正确的填充请求报文.如果代码有什么bug,欢迎指正啊.代码排版有点乱... 本文有以下内容 DNS报文的填充和解析 利用socket API传输信息 一.填充DNS请求报文 随便百度一下,就可以知道DNS报文的格式.所以这里只介绍如何填充DNS报文. 首先是填充报文首部: ? 1 2 3 4 5 6 7 8 9 /* 填充首部的格式大致相同,下面的

linux socket中的SO_REUSEADDR

Welcome to the wonderful world of portability... or rather the lack of it. Before we start analyzing these two options in detail and take a deeper look how different operating systems handle them, it should be noted that the BSD socket implementation