python tcp网络通信

一、接口介绍

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)
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TCP (Transmission Control Protocol) 是一种在网络上进行数据传输的协议,它提供了可靠的、有序的、基于字节流的数据传输,以及错误检测和数据确认等功能。在 Python 中,可以使用 socket 模块实现 TCP 通信。 以下是一个简单的 TCP 服务器和客户端示例: 服务器端代码: ```python import socket HOST = '127.0.0.1' PORT = 8888 # 创建 socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定地址和端口 s.bind((HOST, PORT)) # 监听连接 s.listen(1) print('Waiting for client connection...') # 等待接受客户端连接 conn, addr = s.accept() print('Connected by', addr) while True: # 接收客户端发送的数据 data = conn.recv(1024) if not data: break # 打印接收到的数据 print('Received from client:', data.decode('utf-8')) # 发送响应数据给客户端 conn.sendall('Hello, client!'.encode('utf-8')) # 关闭连接 conn.close() ``` 客户端代码: ```python import socket HOST = '127.0.0.1' PORT = 8888 # 创建 socket 对象 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 s.connect((HOST, PORT)) # 发送数据给服务器 s.sendall('Hello, server!'.encode('utf-8')) # 接收服务器响应数据 data = s.recv(1024) # 打印接收到的数据 print('Received from server:', data.decode('utf-8')) # 关闭连接 s.close() ``` 以上代码中,服务器端首先创建一个 socket 对象,绑定地址和端口,并开始监听连接。当有客户端连接时,服务器接收客户端发送的数据并打印,然后发送响应数据给客户端。客户端首先创建一个 socket 对象,连接服务器,然后发送数据给服务器并接收服务器响应数据。 当然,实际应用中,TCP 通信需要考虑更多的安全性、稳定性、性能等问题,需要根据具体需求进行设计和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值