一.进程号和端口号的区别
简单 来说就是进程号是计算机内部进程的标识,而端口号是不同程序之间通信的协议。
例如两个人利用qq进行聊天,qq利用不同端口进行寻找和通信,而qq就是电脑上的进程。(端口号的范围0-1023为固定端口号,1024-65535为动态端口号,可以供用户使用)
二.TCP传输协议的特点
1.面向连接(双方必须建立连接才能进行数据传输)
2.可靠传输(利用发送应答机制,超时重传,错误校验,流量控制和阻塞管理进行管理)
3.TCP服务端程序开发流程
3.1创建服务端套接字对象socket 3.2绑定端口号bind() 3.3设置监听有主动变为被动接收listen() 3.4接收客户端的连接请求accpect() 3.5接收数据recv() 3.6数据解码(传输的都是二进制的字节流需要解码)decode() 3.7关闭套接字(先关闭客户端套接字,再关闭服务器套接字)三.tcp服务器简单演示
import socket
1 创建服务端端套接字对象(买电话tcp_socket)# 参数1: AF_INET ==> 选择ipv4协议
# 参数2: SOCK_STREAM ==> tcp流式协议
# 参数3: 确定选择一样
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)2 绑定端口号(给电话绑定地址号码)
# 参数1: 元组(ip地址字符串类型的, 端口号数字类型)
# ip地址: 如果端口号写的是 “” ==> 本机ip地址 ==> 127.0.0.1
# 端口号: 1024-65535都可以
tcp_socket.bind(("", 8080))3 设置监听(电话设置好了 等待别人给我打电话)
# 把socket套接字从主动套接字(send发送数据的也可以recv接受数据)
# 变成了被动套接字(recv接受数据)
# 参数1: 数字 最大等待连接的数量
tcp_socket.listen(128)4 等待接受客户端的连接请求(接电话)
# 一但后去连接会受到响应的数据返回(元组)
# 和客户通讯的socket 还有客户的IP地址和端口号
client_socket, client_ip_port = tcp_socket.accept() print("客户的ip地址和端口号", client_ip_port)5 接收数据
# 参数: 接受的数据的大小 字节为单位
recv_data = client_socket.recv(1024) print("网络中获取的数据:", recv_data)数据解码
# 默认是utf8的解码格式
recv_data = recv_data.decode("gbk") print("解码后的数据:", recv_data)6 发送数据
send_data = "我很好".encode("gbk") client_socket.send(send_data)7 关闭套接字
# 需要先关闭客户端套接字 再关闭服务端套接字
client_socket.close() tcp_socket.close()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)