TCP
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、开启监听,用函数listen();
5、接收客户端上来的连接,用函数accept();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
8、关闭监听;
#!/usr/bin/env python3
#-*- coding:utf8 -*-
import socket
import time
import threading
# 创建tcp socket, 面向流模式
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址 端口号
s.bind(('127.0.0.1', 5000))
# 开启监听, 5为等待连接的最大数
s.listen(5)
print("Waiting for connection...")
def tcplink(sock, addr):
print("Accept new connection from {}:{}".format(addr[0], addr[1]))
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('Hello, {}'.format(data.decode('utf-8')).encode('utf-8'))
sock.close()
print('Connection from {}:{} closed.'.format(addr[0], addr[1]))
# 用循环来接受来自客户端的连接
while True:
# 接受一个新连接
sock, addr = s.accept()
# 创建线程来处理TCP连接
t = threading.Thread(target=tcplink, args=(sock, addr))
t.start()
TCP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、连接服务器,用函数connect(),指定对方IP与端口;
3、收发数据,用函数send()和recv(),或者read()和write();
4、关闭网络连接;
#!/usr/bin/env python3
#-*- coding:utf8 -*-
import socket
# 创建socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接
s.connect(('127.0.0.1', 5000))
# 接收消息
print(s.recv(1024).decode('utf-8'))
for data in [b'Michael', b'Tracy', b'Sarah']:
# 发送数据
s.send(data)
print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()