python网络编程之TCP编程
TCP编程
模拟客户端和服务器端进行通信。其中要素为ip地址和端口。
客户端:
- 建立socket对象,并且设置为TCP模式
- 用connect()方法设置端口和ip地址,需要传入一个set。
- 可以进行接受和发送的操作
- 关闭socket连接
服务器端:
因为一个服务器打开一个固定端口进行监听,但是可能响应不同的客户端,所以可以定义不同的进程序进行处理。
- 建立socket对象
- 绑定IP地址和端口
- 监听
- 利用进程响应不同的客户端请求,可以发送和接受数据等操作
- 关闭socket连接
实例:
客户端:
import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) print(s.recv(1024).decode('utf-8')) for i in [b'Michael', b'Tracy', b'Sarah']: s.send(i) print(s.recv(1024).decode('utf-8')) s.send(b'exit') s.close()
服务器端:
import socket import threading import time s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1', 9999)) s.listen(5) print('Waiting for connection...') def tcplink(sock,addr): print('Accept new connection from %s:%s...' % addr) sock.send(b'Welcome!') while True: data=sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8')=='exit': break sock.send(b'hello %s'% data.decode('utf-8').encode('utf-8')) # print(data.decode('utf-8')) # print(data.decode('utf-8').encode('utf-8')) sock.close() print('Connection from %s:%s closed.' % addr) while True: sock,addr=s.accept() t=threading.Thread(target=tcplink,args=(sock,addr)) t.start()
参考教程:廖雪峰的python教程:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319556588648dd1fb0047a34d0c945ee33e8f4c90cc000