什么是客户端&服务端?
1.TCP网络应用程序开发分为客户端程序开发和服务端程序开发。
2. 主动发起建立连接请求的是客户端程序
3. 等待接受连接请求的是服务端程序
TCP客户端开发流程
TCP客户端与服务端启动、交换过程:
TCP客户端开发步骤:
1.创建客户端套接字对象(买电话)
2.和服务端套接字建立连接(打电话)
3.发送数据(说话)
4.接收数据(接听)
5.关闭客户端套接字(挂电话)
涉及socket模块socket类的方法如下:
1. 创建socket对象的socket(AddressFamily, Type)方法: client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2. 创建连接的connect方法
server_address = ('localhost', 8080)
client_socket.connect(server_address)
3. 发送数据send或sendall方法:
message = 'Hello, server!'
client_socket.sendall(message.encode('utf-8'))
4. 接收数据recv方法:
data = client_socket.recv(1024)
5. 关闭socket方法close:
client_socket.close()
简易示例
import socket if __name__ == '__main__': # 1.创建客户端套接字对象 tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.和服务端套接字建立连接 ''' 目的信息server_ip = input(“请输入服务器ip:”) server_port = int(input(“请输入服务器port:”)) 连接服务器套接tcp_client_socket.connect((server_ip, server_port)) ''' tcp_client_socket.connect(("172.16.62.136", 8080)) # 3.发送数据 tcp_client_socket.send("nihaome".encode(encoding="utf-8")) # 4.接收数据 recv阻塞等待数据的到来 recv_data = tcp_client_socket.recv(1024) print(recv_data.decode()) # 5.关闭客户端套接字 tcp_client_socket.close()
TCP服务端
开发步骤
1.创建服务端端套接字对象
2.绑定IP地址和端口号
3.设置监听
4.等待接受客户端的连接请求
5.接收数据
6.发送数据
7.关闭套接字
1 import socket # 0. 导入socket模块 2 3 4 if __name__ == '__main__': 5 # 1.创建服务端套接字对象 6 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 # 2. 绑定IP地址和端口号 8 # tcp_server_socket.bind(("172.16.62.136", 8888)) 9 # 如果bind中的参数第一个ip地址元素设置为"",默认为本机ip地址 10 tcp_server_socket.bind(("", 8888)) 11 # 3.设置监听 128:代表服务端等待排队连接的最大数量 12 tcp_server_socket.listen(128) 13 # 4.等待接受客户端的连接请求 accept阻塞等待 返回一个用以和客户端通socket,客户端的地址 14 conn_socket, ip_port = tcp_server_socket.accept() 15 print("客户端地址:", ip_port) 16 # 5.接收数据 17 recv_data = conn_socket.recv(1024) 18 print("接收到的数据:", recv_data.decode()) 19 # 6.发送数据 20 conn_socket.send("客户端你的数据我收到了".encode()) 21 # 7.关闭套接字 22 conn_socket.close() 23 tcp_server_socket.close()
TCP开发注意事项
标签:client,socket,tcp,server,开发,TCP,服务端,客户端 From: https://www.cnblogs.com/allenxx/p/17624298.html