TCP基本套接字编程
来源:互联网 发布:十大当红网络主播 编辑:程序博客网 时间:2024/05/29 09:13
客户端需要调用的两个函数:
socket()函数:
#include<sys/socket.h>
int socket(int family, int type, int protocol);
参数:第一个参数family为协议族,一般为AF_INET,
第二个参数是套接字类型,一般为SOCK_STREAM(字节流套接字)
第三个是一个常量值,对应不同的传输协议,我们可以将它写成0
返回值:返回一个套接字描述符,成功时候返回一个非负整数
说明:为了得到一个套接字描述符,我们使用了协议族,和套接字的类型,并没有指定本地地址和远程协议地址
connect()函数:
#include<sys/socket.h>
int connect(int sockfd, const struct *servaddr, socklen_t addrlen)
参数:第一个参数是得到的套接字描述符,第二个参数是指向套接字地址结构的指针,第三个是地址结构的长度
返回值:成功返回0,出错返回-1
当使用IPV4协议的时候,调用connect()函数会有TCP/IP的三次握手,到了建立成功或者出错时候返回。
connect()函数使得客户端从CLOSE状态转换到了SYN—SENT状态,如果成功则使得客户端的状态变成ESTABLISHED状态,失败的话则必须关闭这个套接字(close()函数)
服务器需要调用的四个函数:
第一也是创建socket套接字
第二调用bind()函数
第三调用listen()函数
第四调用accept()函数
bind()函数:
将本地协议地址赋值给一个套接字,网络协议的协议地址32位IPv4和16位的UDP和TCP端口号的组合
int bind(int sock, const struct sockaddr *myaddr, socklen_t addr)
参数:
第一个是套接字
第一个参数是指向地址结构体的指针
第三个参数是这个地址结构体的长度
成功返回一个非负整数,失败返回-1
listen()函数:
在本地床架一个套接字的时候,这个套接字为主动套接字,自己调用connect()函数
使用listen()函数,使得主动套接字变成被动套接字。
原型:
int listen(int socked, int blog);
参数:
第一个参数是socked,是套接字标识符
第二个参数是blog,是已完成链接和未完成链接的之和,通常设置为5
返回值:
成功返回0,失败返回-1
accept()函数:
将一个已完成链接的套接字从队列中取出来,返回下一个已完成连接
int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen)
参数:第一个是监听套接字
第二个及第三个参数是对端客户端的协议地址及其长度的指针
- 基本TCP套接字编程
- 基本tcp套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- TCP基本套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- 基本TCP套接字编程
- 《网络编程》基本 TCP 套接字编程
- 4 基本TCP套接字编程
- TCP/IP_Socket编程 - 基本套接字
- 第四章 基本TCP套接字编程
- 基本 TCP 套接字编程讲解
- 基本的TCP套接字编程
- 导致iPhone死机的5秒视频分析
- 点击home键返回,再次点击图标应用重启
- matlab Data Type Conversion
- CentOS下的sudo相关配置的总结归纳
- Unity Editor 编辑器扩展 四 ScriptableObject类定制可序列化数据
- TCP基本套接字编程
- Jsp实践、Jsp案例之猜数
- 从数据库中随机抽取一条记录
- CSS3 转换(Transform)
- Homebrew
- LSTM源码分析
- maven6—pom.xml解析
- 数据采集及传输名词解释——比特率、波特率、码率、帧率
- Leetcode 44. Wildcard Matching (Hard) (cpp)