概述
目录
一、TCP 网络应用程序开发流程的介绍
1、TCP客户端程序开发流程的介绍
2、TCP服务端程序开发流程的介绍
二、TCP客户端程序开发
三、TCP服务端程序开发
四、TCP网络应用程序的注意
五、socket之send和recv原理
1、认识TCP socket的发送和接收缓冲区
2、send原理剖析
3、recv原理剖析
一、TCP 网络应用程序开发流程的介绍
TCP网络应用程序开发分为:
TCP客户端程序开发
TCP服务端程序开发
说明:客户端程序是指运行在用户设备上的程序 服务端程序是运行在服务器设备上的程序,专门为客户端提供数据服务
1、TCP客户端程序开发流程的介绍
步骤说明:
1.创建客户端套接字对象
2.和服务端套接字建立连接
3.发生数据
4.接收数据
5.关闭客户端套接字
2、TCP服务端程序开发流程的介绍
步骤说明:
1.创建服务端套接字对象
2.绑定端口号
3.设置监听
4.等待接受客户端的连接请求
5.接收数据
6.发送数据
7.关闭套接字
二、TCP客户端程序开发
步骤说明:
1.创建客户端套接字对象
2.和服务端套接字建立连接
3.发生数据
4.接收数据
5.关闭客户端套接字
开发代码:
import socket
if __name__ == '__main__':
# 创建tcp客户端套接字
# AF_INET:ipv4地址类型
# SOCK_STREAM:tcp传输协议类型
tcp_client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 和服务端套接字建立连接
tcp_client_socket.connect(("192.168.68.160",8080))
send_content = "hello"
# 对字符串进程编码成二进制数据
send_data = send_content.encode("gbk")
# 发送数据到服务端
tcp_client_socket.send(send_data)
# 接收服务端数据
recv_data = tcp_client_socket.recv(1024)
# 对二进制进行解码
recv_content = recv_data.decode("gbk")
print(recv_content)
# 关闭套接字
tcp_client_socket.close()
将网络调试助手代替服务端与客户端进行连接,测试结果如下:
客户端与服务端进行连接,连接成功后,客户端给服务端发送“hello”信息。
服务端给客户端发送信息后,客户端成功接收信息后,就关闭与服务端的连接,服务端发送的信息在客户端的控制台中显示。
三、TCP服务端程序开发
import socket
if __name__ == '__main__':
# 创建tcp服务端的套接字
tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 端口号复用
tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
# 绑定端口
tcp_server_socket.bind(("",8080))
# 设置监听
tcp_server_socket.listen(128)
# 等待接受客户端的连接请求
# 注意点:当客户端和服务端建立连接成功后都会返回一个新的套接字
# tcp_serve只负责等待接收客户端的连接请求,收发消息都不使用该套接字
new_client,ip_port = tcp_server_socket.accept()
print("客户端的IP和端口号:",ip_port)
# 接收客户端的数据
recv_data = new_client.recv(1024)
# 对二进制数据进行解码
recv_content = recv_data.decode("gbk")
print("接收客户端的数据:",recv_content)
# 发送数据到客户端
send_content = "问题正在处理中"
send_data = send_content.encode("gbk")
new_client.send(send_data)
new_client.close()
# 关闭服务端套接字,表示服务端的套接字不会再等待客户端的连接请求
tcp_server_socket.close()
当服务端程序运行时,用网络调试助手充当客户端,与服务端进行连接,连接成功时,服务端的控制台会打印出,当前连接客户端的IP和端口号。
当在客户端发送消息给服务端,服务端接收到消息后,会向客户端发送消息,最后在关闭服务端。
四、TCP网络应用程序的注意
-
当TCP客户端程序想要从TCP服务端程序进行通信的时候必须先要建立连接
-
TCP客户端程序一般不需要绑定端口号,否则客户端时主动发起建立连接的
-
TCP服务端程序必须绑定端口号,否则客户端找不到这个TCP服务端程序
-
listen后的套接字时被动套接字,只负责接收新的客户端的连接请求,不能收发消息
-
当TCP客户端程序和TCP服务端程序连接成功后,TCP服务端会产生一个新的套接字,接收客户端消息使用该套接字
-
关闭accept返回的套接字意味着和客户端已经通信完毕
-
关闭listen后的套接字意味着服务端的套接字关闭了,会导致新的客户端不能 连接服务端,但是之前已经成功连接的客户端还能正常通信
-
当客户端的套接字调用close后,服务端的recv会解阻塞,返回的数据长度为0,服务端可以通过返回数据的长度来判断客户端是否已经下线,反之服务端关闭套接字,客户端的recv也会解阻塞,返回的数据长度为0
五、socket之send和recv原理
1、认识TCP socket的发送和接收缓冲区
当创建一个TCP socket对象的时候会有一个发送缓冲区和一个接收缓冲区,这个发送和接受缓冲区指的是内存中的一片空间
2、send原理剖析
send必须得通过网卡发送数据,应用程序是无法直接通过网卡发送数据的,它需要调用操作系统接口,也就是说,应用程序发送数据先写入到发送缓冲区(内存中的一片空间),再有操作系统控制网卡把发送缓冲区的数据发送给服务端网卡
3、recv原理剖析
应用软件是无法通过网卡接受数据的,它需要第哦啊有操作系统接口,由操作系统通过网卡接收数据,把接收的数据写入到接收缓冲区(内存的一片空间),应用程序再从接收缓冲区获取客户端发送的数据
最后
以上就是花痴河马为你收集整理的TCP网络应用程序开发流程一、TCP 网络应用程序开发流程的介绍二、TCP客户端程序开发三、TCP服务端程序开发四、TCP网络应用程序的注意五、socket之send和recv原理的全部内容,希望文章能够帮你解决TCP网络应用程序开发流程一、TCP 网络应用程序开发流程的介绍二、TCP客户端程序开发三、TCP服务端程序开发四、TCP网络应用程序的注意五、socket之send和recv原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复