TCP
TCP客户端程序开发流程
1.创建客户端套接字对象
2.和服务端套接字创建链接
3.发送数据
4.接收数据
5.关闭客户端套接字
socket类的介绍
| import socket
socket.socket(AddressFamily,Type)
|
实例
1 2 3 4 5 6 7 8
| import socket if __name__ =='__main__': tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_client_socket.connect(("XX.XX.XX.XX",8080)) tcp_client_socket.send("hello world".encoding(encoding="utf-8")) recv_data=tcp_client_sockey.recv(1024) print(recv_data.decode()) tcp_client_socket.close()
|
TCP服务端程序开发流程
1.创建服务端端套接字对象
2.绑定IP地址和端口号(bind)
3.设置监听(listen)
4.等待接收客户端的连接请求(accept)
5.接收数据(recv)
6.发送数据(send)
7.关闭套接字
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import socket
if __name__ == '__main__': tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEPORT,True) tcp_server_socket.bind(("",8888)) tcp_server_socket.listen(128) connect_socket,ip_port=tcp_server_socket.accept() print("客户端地址:",ip_port) recv_data=connect_socket.recv(1024) print("客户端发送的数据为:",recv_data.decode()) connect_socket.send("你的数据我收到了".encode()) connect_socket.close() tcp_server_socket.close()
|
多任务TCP服务端程序开发
1.编写一个TCP服务端程序,循环等待接受客户端连接请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import socket
if __name__ == '__main__': tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, True) tcp_server_socket.bind(("", 8888)) tcp_server_socket.listen(128) while True: connect_socket, ip_port = tcp_server_socket.accept() print("客户端地址:", ip_port) recv_data = connect_socket.recv(1024) print("客户端发送的数据为:", recv_data.decode()) connect_socket.send("你的数据我收到了".encode()) connect_socket.close()
|
2.使用多线程,当客户端与服务端建立连接成功,创建子线程,使用子线程专门处理客户端的请求,防止主线阻塞
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import socket import threading
def handle_client(): recv_data = connect_socket.recv(1024) print("客户端发送的数据为:", recv_data.decode()) connect_socket.send("你的数据我收到了".encode()) connect_socket.close()
if __name__ == '__main__': tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, True) tcp_server_socket.bind(("", 8888)) tcp_server_socket.listen(128) while True: connect_socket, ip_port = tcp_server_socket.accept() print("客户端地址:", ip_port) sub_thread=threading.Thread(target=handle_client) sub_thread.start()
tcp_server_socket.close()
|