基本的TCP编程
来源:互联网 发布:淘宝软文引流怎么写 编辑:程序博客网 时间:2024/06/03 16:39
http://www.cnblogs.com/xing901022/p/3523910.html
int socket(int family,int type,int protocol);
family:
AF_INET ipv4协议
AF_INET6 ipv6协议
AF_LOCAL unix域协议
AF_ROUTE 路由套接口
type:
SOCK_STREAM 字节流套接口
SOCK_DGRAM 数据包套接口
SOCK_RAW 原始套接口
返回一个很小的非负整数,叫做套接口描述字,简称套接字sockfd
AF_XXX地址族
PF_XXX协议族
connect()建立一个TCP连接
三次握手出错:
1 发送无应答,6秒后再次发送,无应答,24秒后再次发送,若75秒钟后仍未相应,则返回错误
2 硬错:SYN返回RST:SYN到达端口,但没有监听进程、TCP想取消一个已有的连接、TCP接受了一个根本不存在的连接
3 软错:中间路由器产生目的地不可达的ICMP错误
bind() 给套接口分配一个本地协议地址
struct sockaddr_in servaddr;servaddr.sin_addr.s_addr = htol(INADDR_ANY);
头文件<netinet/in.h>定义的所有INADDR_常值都是主机字节序,所以应该使用htol
捆绑非通配IP地址的好处是:由内核将给定的目的IP地址解复用后送往服务器进程
int listen(int sockfd,int backlog);
listen()仅被TCP服务器使用:在调用socket bind之后,accept之前
1 将未连接的套接口转换成被动套接口,指示内核应接受只想此套接口的连接请求。
2 函数第二个参数规定了,套接口排队的最大连接个数
对于给定的监听套接口,有两个队列:
1 未完成连接队列 incomplete connection queue SYN_RCVD状态
2 已完成连接队列 complete connection queue ESTABLISHED状态
accept() TCP服务器调用,从已完成的队列头返回下一个已完成的连接。若完成队列为空,则睡眠
int accept(int sockfd,struct sockaddr *cliaddr,socklen_t * addrlen);
addrlen是值-结果参数
fork()一次调用两个返回值:
1 父进程调用返回的是子进程的ID
2 子进程调用返回0
close()将套接口设置为已关闭标记,并立即返回到进程。
描述字访问计数,用于设置父进程的访问状况。
0 0
- 基本的TCP编程
- 基本的TCP编程
- 一个基本的TCP/IP编程实例
- 基本的tcp套接口编程
- 基本的TCP套接字编程
- TCP,UDP基本编程
- 基本TCP socket编程
- 基本TCP socke编程
- 基本tcp socket编程
- 基本TCP套接口编程
- 基本TCP套接字编程
- 基本TCP socket编程一
- 基本TCP套接口编程
- 基本tcp套接字编程
- TCP网络编程基本函数
- 基本TCP套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- Effective C++读书笔记一
- javascript实现全选与反选
- string与int类型转换 && reserse()
- react native for android
- Android Material适配 为控件设置指定背景色和点击波纹效果
- 基本的TCP编程
- 解决Android加载图片时内存溢出的问题
- Quartz2D绘图一
- HDU 5072 Coprime(容斥)
- 用python + hadoop streaming 编写分布式程序的本地调试方法
- C++静态库与动态库
- hdu 5445 Food Problem(多重背包)
- 1075:What Are You Talking About
- 黑马程序员——Java基础(五)之面向对象