- 论坛徽章:
- 0
|
我从学网络一直以来就对Stevens书中的那个sock的程序感到好奇心想这玩意咱就这么强怎么写出来的
于是前几天大搜了一把终于不负有心给我找到了Stevens的中文绝版sock工具源码不敢私藏拿出来给大家
下面是程序的选项菜单
- minuit@suse:~> ./sock
- 使用: sock [ options ] <host> <port> (for client; default)
- sock [ options ] -s [ <IPaddr> ] <port> (for server)
- sock [ options ] -i <host> <port> (for "source" client)
- sock [ options ] -i -s [ <IPaddr> ] <port> (for "sink" server)
- options: -b n 将n绑定为客户的本地端口号(在默认情况下,系统给客户分配一个临时的端口号).
- -c 将从标准输入读入的新行字符转换为一个回车符和一个换行符,类似地,当从网络中读数据时,将<回车,换行>序列转换为新行字 符。很多因特网应用需要 NVT ASCII,它使用回车和换行来终止每一行.
- -f a.b.c.d.port为一个UDP端点指明远端的IP地址(a.b.c.d)和远端的端口号(port).
- -h 实现TCP的半关闭机制,当在标准输入中读到一个文件结束符时并不终止.而是在TCP连接上发送一个半关闭报文,继续从网络中 读报文直到对方关闭连接.
- -i 源客户或接收器服务器.向网络写数据(默认),或者如果和-s选项一起用,从网络读数据.-n选项可以指明写(或读)的缓存的数目,-w选项可以指明每次写的大小, -r 选项可以指明每次读的大小.
- -n n 当和-i选项一起使用时,n指明了读或写的缓存的数目.n的默认值是1024.
- -p n 指明每个读或写之间暂停的秒数.这个选项可以和源客户(-i)或接收器服务器(-is)一起使用作为每次对网络读写时的延迟.参考-P选项,实现在第1次读或写之前暂停.
- -q n 为TCP服务器指明挂起的连接队列的大小:TCP将为之进行排队的已经接受的连接的数目.默认值是5.
- -r n 和-is选项一起使用,n指明每次从网络中读数据的大小.默认是每次读1024字节.
- -s 作为一个服务器启动,而不是一个客户.
- -u 使用UDP,而不是TCP.
- -v 详细模式.在标准差错上打印附加的细节信息(如客户和服务器的临时端口号)
- -w n 和-i选项一起使用,n指明每次从网络中写数据的大小.默认值是每次写1024字节.
- -A SO_REUSEADDR接口选项.对于TCP,这个选项允许进程给自己分配一个处于2MSL等待的连接的端口号.对于UDP,这个选项支持多 播,它允许多个进程使用同一个本地端口来接收广播或多播的数据报.
- -B SO_BROADCAST接口选项,允许向一个广播IP地址发送UDP数据报.
- -C 设置终端为cbreak模式.
- -D SO_DEBUG接口选项.这个选项使得内核为这个TCP连接维护另外的调试信息.以后可以运行trpt(8)程序输出这个信息.
- -E 如果实现支持,使能IP_RECVDSTADDR接口选项.这个选项用于UDP服务器,用来打印接收到的UDP数据报的目的IP地址.
- -F 指明一个并发的TCP服务器.即,服务器使用fork函数为每一个客户连接创建一个新的进程.
- -K SO_KEEPALIVE 接口选项
- -L n SO_LINGER 选项把一个TCP端点的拖延时间 (linger time)(SO_LINGER)设置为 n.一个为0的拖延时间意味着当网络连接关闭 时,正在排队等着发送的任何数据都被丢弃,向对方发送一个重置报文.一个正的拖延时间(百分之一秒)是关闭网络连接必须等待的将所有 正在排队等着发送的数据发送完并收到确认的时间。关闭网络连接时,如果这个拖延定时器超时,挂起的数据没有全部发送完并收到确认,关闭操作将返回一个差错信息.
- -N 设置TCP_NODELAY接口选项来禁止Nagle算法
- -O n 指明一个TCP服务器在接受第一个客户连接之前暂停的秒数.
- -P n 指明在第一次对网络进行读或写之前暂停的秒数。这个选项可以和接收器服务器(-is)一起使用,完成在接受了客户的连接请 求之后但在执行从网络中第一次读之前的延迟。和接收源(-i)一起使用时,完成连接建立之后但第一次向网络写之前的延迟.参看-p选项,实现 在接下来的每一次读或写之间进行暂停.
- -Q n 指明当一个TCP客户或服务器收到了另一端发来的一个文件结束符,在它关闭自己这一端的连接之前需要暂停的秒数.
- -R n 把接口的接收缓存(SO_RCVBUF接口选项)设置为n.这可以直接影响TCP通告的接收窗口的大小.对于UDP,这个选项指明了可以接收的最大的UDP数据报.
- -S n 把接口的发送缓存(SO_SNDBUF接口选项)设置为n.对于UDP,这个选项指明了可以发送的最大的 UDP数据报.
- -U n 在向网络写了数字n后进入TCP的紧急模式.写一个字节的数据以启动紧急模式.
- minuit@suse:~>
复制代码 |
|