一、接口介绍
import socket # 导入 socket 模块
tcp服务器流程
配置tcp服务器
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345 # 设置端口
s.bind((host, port)) # 绑定端口
s.listen(5) # 等待客户端连接
收发数据
while True:
c,addr = s.accept() # 建立客户端连接
print ‘连接地址:’, addr
c.send(‘欢迎连接服务器!’.encode())
c.close() # 关闭连接
tcp客户端流程
配置客户端
s = socket.socket() # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345 # 设置端口号
连接
s.connect((host, port))
print s.recv(1024)# 打印接收
s.close()
二、程序示例
服务器
import socket
#1、创建socket
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#2、配置端口和ip
host = socket.gethostname()#获取本地计算机名
ip = socket.gethostbyname(host)#获取本地计算机ip
port = 1000
#绑定ip和端口
tcp_server.bind((ip,port))
#监听
tcp_server.listen(3)
#3、等待客户端连接
while(1):
c,addr = tcp_server.accept()
print("客户端连接",addr)
while(1):
#4、收发数据
c.send("hello client\n")
break
#5、关闭
tcp_server.close()
客户端
import socket
#创建socket
tcp_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#设置要连接的服务器ip和端口
server_ip = "192.168.109.1"
server_port = 1000
#连接服务器
tcp_client.connect((server_ip, server_port))
#收发数据
#tcp_client.send("hello server\n")
buff = tcp_client.recv(1024)
print(buff)
tcp_client.send(buff)
#
#关闭
tcp_client.close()
三、工程实例
以下是tcp客户端收到“door”之后播放门铃声音的程序
import socket
import time
import sys
from pygame import mixer
mixer.init()
SERVER_IP = '192.168.3.2'
#SERVER_IP = input('ip:')
SERVER_PORT = 8888
print("Starting socket: TCP...")
server_addr = (SERVER_IP, SERVER_PORT)
socket_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while True:
try:
print("Connecting to server @ %s:%d..." %(SERVER_IP, SERVER_PORT))
socket_tcp.connect(server_addr)
break
except Exception:
print("Can't connect to server,try it latter!")
time.sleep(1)
continue
print("wait rcv")
door = "door"
while True:
try:
data = socket_tcp.recv(512)
if len(data)>0:
print("Received: %s" % data)
if(data == door.encode()):
print('door signel\n')
mixer.music.load('lingsheng.mp3')
mixer.music.play()
time.sleep(1)
mixer.music.stop()
else:
print(door)
time.sleep(1)
continue
except Exception:
socket_tcp.close()
socket_tcp=None
sys.exit(1)