Tcp/Udp知识
文章平均质量分 77
Linux菜_鸟
努力学习Linux中
展开
-
socket选项自带的TCP异常断开检测
TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时发包,然后客户端回应,如果已经出现异常断开则服务器接收会返回错误,而客户端在指定时间内没有收到转载 2014-01-02 16:35:31 · 956 阅读 · 0 评论 -
TCP协议连接建立与连接断开过程(含断开时的TCP状态图)
TCP协议连接建立时3次握手的过程。简述TCP协议连接建立时3次握手的过程。根据TCP头部,说明下列3个包在连接建立过程中的次序.0020 00 50 83 aa 46 49 3e dd 33 96 37 a3 a0 12 ...P..FI>.3.7...0030 16 a0 c4 c0 00 00 02 04 05 b4 04 02 08转载 2014-01-09 15:19:37 · 1088 阅读 · 0 评论 -
Socket的阻塞模式和非阻塞模式
阻塞模式 Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在阻塞模式的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待时间。图所示,在调用转载 2014-02-12 16:00:33 · 746 阅读 · 0 评论 -
TCP.普通socket(阻塞/非阻塞)模型
在此介绍window下的TCP普通socket编程.1.服务器端// CommonSocket.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "winsock2.h"#pragma comment(lib, "Ws2_32.l转载 2014-02-12 16:29:29 · 826 阅读 · 0 评论 -
客户端 用不用 bind 的区别
连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。 Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是转载 2014-02-12 20:19:35 · 756 阅读 · 0 评论 -
关于绑定IP地址与端口号的见解
客户和服务器通过调用函数bind时可以指定IP地址或端口号,可以都指定,也可以都不指定,根据期望的结果,对sin_addr和sin_port,或sin6_addr和sin6_port应置为什么值,下面做了总结:进程指定结果IP地址端口通配地址0内核选择IP地址和端口通配地址非0内核选择IP地址,进程指定端口本地IP地址0进程指定IP地址,内核选择转载 2014-02-13 09:46:15 · 3692 阅读 · 0 评论 -
TCP/IP和Socket的关系
要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。 对于网络编程,我们也言必称TCP/IP,似乎其它网络协议已经不存在了。对于TCP/IP,我们还知道TCP和转载 2014-02-12 16:54:31 · 706 阅读 · 0 评论 -
select函数详解及应用
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、 accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方转载 2014-02-19 15:59:27 · 1219 阅读 · 0 评论