TCP在科普中国解释:

    传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

    TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。

python二进制打印函数 python怎么输出二进制_python二进制打印函数

TCP通讯步骤:

1、创建连接

2、传输数据

3、关闭连接

TCP的特点:

1、面向连接:

    通信双发必须先建立连接才能进行数据的传输,数据传输完成后,双方必须断开连接,以释放系统资源。

2、可靠传输:

    TCP采用发送应答机制(TCP底层会在收到数据时应答)

    超时重传

    错误校验(TCP底层会把错误顺序的数据重新排序)

    流量控制和阻塞管理

总结:

    TCP是一个稳定、可靠的传输层协议,常用于对数据进行准确无误的传输

python二进制打印函数 python怎么输出二进制_python 二进制输出转码_02

client实现

1、创建客户端套接字
2、连接服务端ip
3、准备数据,转格式
4、发送数据
5、接收服务端数据,转格式
6、关闭连接

代码:

#coding:utf-8import socketif __name__ == '__main__':# 创建客户端套接字
    # AF_INET:表示ipv4    SOCK_STREAM:表示基于TCP的,数据传输比较有保障。tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接服务端IP地址与端口号tcp_client_socket.connect(("00.00.00.00", 9999))# 准备发送的数据,数据为unicode编码,方便后续转二进制
    # 为了测试方便,这里写死了,正常使用时可以用 inputdata = u"你好,这里是客户端"# gbk:表示编码,转码为二进制数据client_data = data.encode("gbk")# 发送数据tcp_client_socket.send(client_data)# 接收服务端返回的数据    1024:表示字节tcp_server_data = tcp_client_socket.recv(1024)# 接收的数据为二进制,进行转码server_data = tcp_server_data.decode('gbk')print '[服务端][info] ——》\t', server_data# 断开套接字连接tcp_client_socket.close()

客户端运行结果:

C:\Python27\python.exe C:/Python27/客户端.py
[服务端][info] ——》    好的,已收到
Process finished with exit code 0

服务端结果(先用网络调试助手代替服务端):

python二进制打印函数 python怎么输出二进制_服务端_03

从这里可以看出,客户端成功连接到服务端,并且成功接收到了服务端发送的数据

python二进制打印函数 python怎么输出二进制_python 二进制输出转码_04

SERVER实现流程:

1、创建TCP服务端套接字
2、绑定端口号
3、设置监听
4、等待客户端连接请求
5、接受客户端数据
6、返回服务端响应结果
7、关闭套接字

代码:

#coding:utf-8import socketif __name__ == '__main__':# 创建TCP服务端套接字
    # AF_INET:表示ipv4    SOCK_STREAM:表示基于TCP的,数据传输比较有保障。tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定端口号
    # 这里是个元组,第一个数据是IP,一般不传。第二个数据是绑定的端口号tcp_server_socket.bind(("", 9090))# 128:表示最大等待建立连接的任务tcp_server_socket.listen(128)# 等待客户端的连接请求
    # 这里返回的是个元组,第一个数据是返回的新的套接字对象
    # 第二个数据是客户端的IP与端口号server_socket, client_ip = tcp_server_socket.accept()print '[客户端IP]:', client_ip# 接收客户端的数据  1024: 字节tcp_client_data = server_socket.recv(1024)# 接收到的数据是二进制,转码client_data = tcp_client_data.decode('gbk')print '[客户端][info]:\t', client_data# 响应结果数据,转码tcp_server_data = u'数据收到,处理中······'server_data = tcp_server_data.encode('gbk')# 服务端发送响应结果server_socket.send(server_data)# 工作套接字关闭连接server_socket.close()# 服务端套接字关闭连接tcp_server_socket.close()

客户端结果:

python二进制打印函数 python怎么输出二进制_python 二进制输出转码_05

服务端运行结果:

C:\Python27\python.exe C:/Python27/服务端.py
[客户端IP]:('192.168.0.105', 55588)
[客户端][info]:你好,这里是客户端
Process finished with exit code 0

python二进制打印函数 python怎么输出二进制_python二进制打印函数_06

最后把服务端与客户端结合运行

坑点:

    1、客户端与服务端连接不上,可以试一下ping

    2、抓包。分析发送的包ip地址、端口号是否正确

    3、防火墙尽量关闭,避免拦截

    4、可以ping通,防火墙也关闭了,但是运行报错ERROR 10060,这里找到防火墙的高级设置-入站规则,新建一条规则,选择端口号,把机器上部署的服务端&客户端端口号输入,确认即可解决

python二进制打印函数 python怎么输出二进制_数据_07

python二进制打印函数 python怎么输出二进制_python 二进制输出转码_08