tcp套接字socket编程
套接字:进行网络通信的一种手段,socket
流式套接字(SOCK_STREAM):传输层基于tcp协议进行通信
数据报套接字(SOCK_DGRAM):传输层基于udp协议进行通信
原始套接字:访问底层协议的套接字
流式套接字:
TCP服务端
from socket import *
1、创建套接字
socket(scoket_family=AF_INET,socket_type=SOCK_STREAM,proto=0)
功能:创建套接字
参数:socket_family:选择地址族种类AF_INT(UNIX)
socket_type:套接字类型SOCK_STREAM(流式),SOCK_DGRAM数据报
proto:子协议类型默认为0
返回值:返回创建的套接字
2、绑定IP和端口号
sockfd.bind()
功能:绑定IP和端口
参数:是一个元组,第一项是字符串形式的IP,第二项是端口号
('192.168.1.2',8888)
3、让套接字具有监听功能
sockfd.listen(n)
功能:使套接字变为监听套接字,同时创建监听队列
参数:n监听队列大小
4、等待客户端连接
socket.accept()
功能:阻塞等待客户端连接
返回值:第一个:返回一个新的套接字用来和客户端通信
第二个:返回连接的客户端的地址
5、消息的收发
recv(buffer)
功能:接受消息
参数:一次接受消息的大小 字节
返回值:接受到的内容
send()
功能:发送消息
参数:发送的内容(byte)
返回值:发送了多少个字节
6、关闭套接字
close()
功能:关闭套接字
tcp客户端流程
1、创建流式套接字
2、发起连接请求
connect()
功能:发起连接
参数:一个元组 第一个元素:服务器的IP,第二个元素:服务器的port
3、收发消息
4、关闭套接字
关于recv和send
发送接受缓冲区:发送和接收消息均放到缓冲区再进行处理
recv接收消息当一次接受不完的时候会下次继续接收
当recv阻塞时,如果客户端断开,则recv立即返回一个空字符串
tcp粘包处理
tcp中数据以数据流的方式发送接收,每次发送的数据间没有边界,在接收时可能造成数据的粘连即使为粘包
粘包如何处理:
1、每次发送消息结束位置加标志
2、发送的消息添加结构描述
3、当连续发送时每次发送有一个短暂延迟sleep(0.1)
- 多客户登录(基于TCP的流式套接字Socket编程)
- [原]《Java TCP/IP Socket 编程 》读书笔记之十一:深入剖析socket——TCP套接字的生命周期
- 【网络编程学习笔记01】Socket套接字编程(TCP/IP)
- Java套接字Socket编程--TCP参数
- Socket套接字编程(一)——TCP编程
- 网络编程一:概述、网络模型、TCP\UDP、Socket套接字、UDP发送和接收、UDP聊、阻塞式方法
- Java套接字Socket编程--TCP参数
- 网络编程与并发-TCP/UDP套接字、粘包问题、Socket编程、并发编程、FTP作业
- Java套接字Socket编程--TCP参数
- 《Java TCP/IP Socket 编程 》读书笔记之十一:深入剖析socket——TCP套接字的生命周期
- TCP/IP_Socket编程 - 基本套接字
- 我所不知道的TCP Socket编程(一)-简介+创建套接字
- 我所不知道的TCP Socket编程(五)-交换数据、套接字读写操作
- Java套接字Socket编程--TCP参数
- 基于 TCP (面向连接)和无连接UDP协议的 socket 套接字编程
- 网络编程与并发-TCP/UDP套接字、粘包问题、Socket编程、并发编程、FTP作业
- 关于 socket套接字编程 tcp服务端和客户端的建立
- iTOP-4412开发板实现基于linux下网络通信-套接字 TCP 的 socket 编程
- 【HTTP】TCP连接与套接字编程(socket)理论基础
- 【项目】MFC下TCP/IP的套接字编程中CSocket,CSocketfile与CArchive类