Я просто хочу работать с двумя разными серверами над файлом python.
Я могу работать с сервером. Но когда я хочу попробовать работать на двух серверах, я просто не могу.
это клиент
import clss as cl
import cv2
import pickle
import struct
import socket
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
UDP_IP = "192.168.1.100"
UDP_PORT = 6666
anaDuzen = BoxLayout(orientation = "vertical") # Elemanların hepsini tutan ana pencere düzenimiz
ikinci_Duzen = BoxLayout(orientation = "vertical")
ilkSatir = BoxLayout()
ikinciSatir = BoxLayout()
ucuncuSatir = BoxLayout()
dorduncuSatir = BoxLayout()
ip_txt=TextInput()
textdeneme=TextInput()
take_port_number=TextInput()
label_for_ip=Label(text='IP Adresi:')
label_for_port=Label(text='Port Numarası:')
doldurLabel2=Label()
doldurLabel=Label()
ileri_Button=Button(text = "İleri")
geri_Button=Button(text = "Geri")
sag_button=Button(text = "Sag")
sol_button=Button(text = "Sol")
def kameraSender():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.100', 6666))
connection = client_socket.makefile('wb')
cam = cv2.VideoCapture(0)
cam.set(3, 320);
cam.set(4, 240);
img_counter = 0
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
while True:
ret, frame = cam.read()
result, frame = cv2.imencode('.jpg', frame, encode_param)
# data = zlib.compress(pickle.dumps(frame, 0))
data = pickle.dumps(frame, 0)
size = len(data)
client_socket.sendall(struct.pack(">L", size) + data)
img_counter += 1
if(img_counter>90):
break
cam.release()
def ileriGit(instance):
kameraSender()
def geriGit(instance):
#print("Hello")
cl.kamera.kameraAl()
def sagaGit(instance):
#print("Hello")
MESSAGE="sag"
try:
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(str.encode(MESSAGE),(UDP_IP,UDP_PORT))
except:
pass
def solaGit(instance):
#print("Hello")
MESSAGE="sol"
try:
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(str.encode(MESSAGE),(UDP_IP,UDP_PORT))
except:
pass
ileri_Button.bind(on_press = ileriGit)
geri_Button.bind(on_press = geriGit)
sag_button.bind(on_press = sagaGit)
sol_button.bind(on_press = solaGit)
# Ens on denenen kod burada
#geri_Button.bind(on_press=onur)
class Program(App):
def build(self):
#İLK SATIR
ilkSatir.add_widget(label_for_ip)
ilkSatir.add_widget(ip_txt)
#İKİNCİ SATIR
ikinciSatir.add_widget(label_for_port)
ikinciSatir.add_widget(take_port_number)
ucuncuSatir.add_widget(doldurLabel)
ucuncuSatir.add_widget(ileri_Button)
ucuncuSatir.add_widget(doldurLabel2)
dorduncuSatir.add_widget(sol_button)
dorduncuSatir.add_widget(geri_Button)
dorduncuSatir.add_widget(sag_button)
anaDuzen.add_widget(ilkSatir)
anaDuzen.add_widget(ikinciSatir)
anaDuzen.add_widget(ucuncuSatir)
anaDuzen.add_widget(dorduncuSatir)
return anaDuzen
obj=Program()
obj.run()
def kameraSender():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.100', 6666))
connection = client_socket.makefile('wb')
cam = cv2.VideoCapture(0)
cam.set(3, 320);
cam.set(4, 240);
img_counter = 0
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
while True:
ret, frame = cam.read()
result, frame = cv2.imencode('.jpg', frame, encode_param)
data = pickle.dumps(frame, 0)
size = len(data)
client_socket.sendall(struct.pack(">L", size) + data)
img_counter += 1
if(img_counter>90):
break
cam.release()
def ileriGit(instance):
kameraSender()
def sagaGit(instance):
MESSAGE="sag"
try:
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(str.encode(MESSAGE),(UDP_IP,UDP_PORT))
except:
pass
это сервер
import clss as cl
import socket
from time import sleep
import cv2
import io
import socket
import struct
import time
import pickle
import zlib
import sys
import numpy as np
#cl.kamera.kameraAl()
HOST=''
PORT=6666
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((HOST, PORT))
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print('Socket created')
s.bind((HOST,PORT))
print('Socket bind complete')
s.listen(10)
print('Socket now listening')
payload_size = struct.calcsize(">L")
while True:
try:
conn,addr=s.accept()
data = b""
while len(data) < payload_size:
print("Recv: {}".format(len(data)))
data += conn.recv(4096)
packed_msg_size = data[:payload_size]
data = data[payload_size:]
msg_size = struct.unpack(">L", packed_msg_size)[0]
while len(data) < msg_size:
data += conn.recv(4096)
frame_data = data[:msg_size]
data = data[msg_size:]
frame=pickle.loads(frame_data, fix_imports=True, encoding="bytes")
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
cv2.imshow('ImageWindow',frame)
cv2.waitKey(1)
except:
print("ErrorForCameraserver")
try:
data2, address = server_socket.recvfrom(256)
print(data2)
if data2.decode('utf-8') == 'ileri':
print("Başarılı ileri")
if data2.decode('utf-8') == 'geri':
print("Başarılı geri")
if data2.decode('utf-8') == 'sag':
print("Başarılı sag")
if data2.decode('utf-8') == 'sol':
print("Başarılı sol")
except:
print("Error")
пожалуйста, позаботьтесь не про порт и ip номера. это просто для того, чтобы показать, что происходит. Я просто хочу отправить данные камеры и те же данные о простой строке. Строка не важна отсюда. Когда я нажимаю "ileri Git", он работает правильно. Но пока это работает, я не могу нажать другую кнопку или я не могу что-то сделать. здесь у нас есть решение этой проблемы? Большое вам спасибо.