python - 在socket编程python中发送多个字符串

标签 python sockets raspberry-pi gpio

我想多次发送数据。我在服务器和客户端上有以下代码:

在服务器上:

import socket
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(14,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)

serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host="10.168.1.50"
port=80
print(host)
print(port)
serversocket.bind((host,port))


serversocket.listen(5)
print('server started listening')
while 1:
    (clientsocket,address)=serversocket.accept()
    print("connection established from : ",address)
    data=clientsocket.recv(1024).decode()
    print(data)
    if (data=='hai'):
        GPIO.output(14,True)
        GPIO.output(15,False)
        print 'hello'
    else:
        GPIO.output(14,False)
        GPIO.output(15,False)
    clientsocket.send("data is sent".encode())

在客户端:

import socket

s = socket.socket()
host = "10.168.1.50"
port = 80
s.connect((host,port))
while True:

    in_data=raw_input(" Enter data to be sent > ")
    s.send(in_data.encode())
    s.send('hai'.encode())
    data = ''
    data = s.recv(1024).decode()
    print (data)
    s.close

我发送第一个字符串,得到响应,但是当我发送第二个字符串时,它挂起。 我该如何解决这个问题?

最佳答案

这是有效的代码

在服务器上:

import socket
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setup(14,GPIO.OUT)
GPIO.setup(15,GPIO.OUT)

serversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host="10.168.1.50"
port=80
print(host)
print(port)
serversocket.bind((host,port))


serversocket.listen(5)
print('server started listening')
(clientsocket,address)=serversocket.accept()
print("connection established from : ",address)
while 1:
    data=clientsocket.recv(1024).decode()
    print(data)
    if (data=='hai'):
        GPIO.output(14,True)
        GPIO.output(15,False)
        print 'hello'
    else:
        GPIO.output(14,False)
        GPIO.output(15,False)
    clientsocket.send("data is sent".encode())

在客户端:

import socket

s = socket.socket()
host = "10.168.1.50"
port = 80
s.connect((host,port))
try:
    while True:

        in_data=raw_input(" Enter data to be sent > ")
        s.send(in_data.encode())
        data = ''
        data = s.recv(1024).decode()
        print (data)
finally:
    s.close()

关于python - 在socket编程python中发送多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21073072/

相关文章:

Python - 循环等待输入

python - 如何使用 linkchecker 忽略包含图像格式的 URL

python - 超过两个参数的 Numpy `logical_or`

java - 中断被阻塞的线程,等待来自套接字的输入

c# - 使用 AForge.NET 和 Windows 窗体流式传输实时视频有哪些方法?

java - 在 "Raspberry Pi"(Windows) 的 QEMU 模拟上设置 Jenkins CI 服务器

ubuntu - Snappy Ubuntu Core 无法启动

php - 如何使用 python 或 php 获取带有加载的 html 页面的嵌套标签?

python - 我怎样才能以更简单的方式写这个?

java - 终止线程的正确方法