概述有很多方法来获取和设置影响套接口的选项:getsockopt和setsockopt函数fcntl函数ioctl函数getsockopt和setsockopt函数这两个函数仅用于套接口。#include int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t *optlen);返回值:0——成功,-1——出错其中,sock
转载 2014-03-10 09:50:00
88阅读
2评论
概述 原始套接口是一种对原始网络报文进行处理的套接口。原始套接口主要应用在底层网络编程上,同时也是网络黑客的必备手段。例如sniffer、拒绝服务(DoS)、IP地址欺骗等都需要在原始套接字的基础上实现。与原始套接字对应,之前的TCP/UDP的套接字称为标准套接字,如下图所示,为标准套接字与原始套接字之间的关系。标准套接字与网络协议栈的TCP、UDP层打交道,而原始套接字则与IP层级网络协议栈核心
转载 2014-03-12 16:07:00
37阅读
2评论
**常见服务器模型:** - 循环服务器 - 并发服务器简单的并发服务器模型使用线程池或进程池的服务器模型使用I/O复用的并发服务器模块UDP循环服务器模型// UDP循环服务器模型struct sockaddr_in local_addr,accept_addr;// 填充local_addr,略// 使用SOCK_DGRAM调用socket创建UDP套接字int sockfd = sock
原创 2021-05-17 10:11:02
539阅读
概述SCTP是一个较新的传输协议,于2000年在IETF得到标准化(TCP是在1981年标准化的)。它最初是为满足不断增长的IP电话市场设计的;具体地说,就是穿越因特网传输电话信令。SCTP是一个可靠的面向消息的协议,在端点之间提供多个流,并为多宿提供传输级支持。尽管SCTP和TCP之间存在一些本质性的差别,然而SCTP的一到一(one-to-one)接口与TCP提供的应用接口非常接近。这一点允许轻而易举地移植应用程序,不过没法使用SCTP的某些高级特性。SCTP的一到多(one-to-many)接口提供了这些特性的完全支持,然而可能需要费时费力地重新编写已有的应用程序。对于使用SCTP开发的
转载 2014-03-10 22:16:00
161阅读
2评论
 编写一个完整的TCP客户和服务器程序所需要的基本套接口函数:1、socket函数(客户端、服务器端都必须调用)​​​​参数family指明协议族(family),该参数也往往被称为协议域(domain)。所以有的书上声明如下:​​​​而且对于socket函数第一个参数,在不同书籍上可能会看到不同前缀的取值常量列表,如下两图所示:​​​​​​​​AF_xxx与PF_xxx:AF_前缀表地址族,PF
转载 2014-03-07 15:45:00
159阅读
2评论
有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项。 int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_
转载 2014-11-21 08:51:00
89阅读
2评论
在迭代服务器中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现。 网络服务器通常用fork来同时服务多个客户端,父进程专门负责监听端口,每次accept一个新的客户端连接就fo...
转载 2013-07-22 19:35:00
213阅读
2评论
概述 使用UDP编写的一些流行的应用程序有:DNS(域名系统)、NFS(网络文件系统)和SNMP(简单网络管理协议)。 如下图所示,给出了典型的UDP客户/服务器程序的函数调用: 客户不与服务器建立连接,而是只管使用sendto函数给服务器发送数据报,其中必须作为参数指定目的地(即服务器)的地址。类似地,服务器不接受来自客户的连接,而是只管调用recvfrom函数,等待来自某个客户的数据...
转载 2014-03-10 16:55:00
61阅读
2评论
Contents套接接口套接字描述符寻址字节序地址格式地址查询绑定地址建立连接数据传输套接字选项带外数据UNIX套接字使用套接字的示例面向连接的ruptime无连接的ruptime套接接口 套接接口是一组用来结合UNIX I/O函数进行进程间通信的函数,大多数系统上都实现了它,...
转载 2013-08-03 15:28:00
102阅读
2评论
前言 大多数套接口函数都需要一个指向套接口地址结构的指针作为参数。每个协议族都定义它自己的套接口地址结构。这些结构的名字均以“sockaddr_”开头,并以对应每个协议族的唯一后缀结束。 IPv4套接口地址结构 IPv4套接口地址结构通常也称为”网际套接口地址结构“,它以”sockaddr_in“命名,定义在头文件中。其POSIX定义如下: /* sockaddr_in */stru...
转载 2014-03-06 17:34:00
44阅读
2评论
端口号 端口号(port number):16位整数,用来区分不同的进程。 服务器使用的端口号:TCP和UDP定义了一组众所周知的端口(well-known port),用于标识众所周知的服务。 客户端使用的端口号:通常使用短期存活的临时端口(ephemeral port)。这些端口号通常由传输层协议自动赋予客户。客户一般不关心其临时端口的具体值,而只需确信它在所在主机中是唯一的就行。传输层...
转载 2014-03-06 13:31:00
96阅读
2评论
下面有9种服务器模型分别是:迭代服务器。并发服务器,为每个客户fork一个进程。预先派生子进程,每个子进程都调用accept,accept无上锁保护。预先派生子进程,以文件锁的方式保护accept。 预先派生子进程,以线程互斥锁上锁的方式保护accept。预先派生子进程,由父进程向子进程传递套接口...
转载 2013-07-29 18:52:00
102阅读
2评论
在涉及套接字的I/O操作上设置超时的方法有以下3种:调用alarm,它在指定超时期时产生SIGALRM信号。这个方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的alarm调用。在select中阻塞等待I/O(select有内置的时间限制),以此代替直接阻塞在r...
转载 2013-07-26 11:28:00
231阅读
2评论
1. SO_BROADCAST 套接字选项 本选项开启或禁止进程发送广播消息的能力。只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上(例如以太网,令牌环网等)。我们不可能在点对点链路上进行广播,也不可能在基于连接的传输协议(例如TCP和SCTP)之上进行广播。 2. SO_DE...
转载 2013-07-25 10:54:00
61阅读
2评论
概述  今天,给大家讲解网络编程中的一个内容——Unix 本地套接字。   发现很多人不知道或者不太了解 Unix
原创 2022-08-01 12:47:46
300阅读
setsockopt的一些用法:close socket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseadd...
转载 2013-07-24 15:04:00
71阅读
2评论
阅读此博客时,可以参考以前的博客>和>。 下面是关于回送客户和服务器程序开发一些简单的心搏函数。这些函数可以发现对端主机或到对端的通信路径的过早失效。 在给出这些函数之前我们必须提出一些警告。首先,有人会想到使用TCP的保持存活特性(SO_KEEP...
转载 2013-07-28 20:31:00
72阅读
2评论
socket,bind,listen 三个函数创建监听描述符
原创 2018-03-18 11:08:30
1274阅读
2点赞
1评论
原始套接字(SOCK_RAW)。应用原始套接字,我们可以编写出由TCP和UDP套接字不能够实现的功能。 注意原始套接字只能够由有 root权限的人创建。 可以参考前面的博客>。/******************** DOS.c ...
转载 2013-08-04 14:51:00
136阅读
2评论
套接口
转载 2023-06-28 13:23:19
20阅读
  • 1
  • 2
  • 3
  • 4
  • 5