2016-11-06 3 views
1
#!/usr/bin/env python 
import socket 
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
clientsocket.connect(('192.168.1.123', 5162)) 
clientsocket.send('getval.1') 
clientsocket.close 
clientsocket.bind(('192.168.1.124', 5163)) 
clientsocket.listen(1) 
while True: 
    connection, address=clientsocket.accept() 
    value=connection.recv(1024) 
    print value 

Я пытаюсь получить сообщение python на сервер, и в ответ сервер отвечает. Тем не менее, когда я выполняю этот код дает мнеSocket.error: [Errno 10022] Был указан недопустимый аргумент

Socket.error: [Errno 10022] An invalid argument was supplied 
+0

всегда показывает полное сообщение об ошибке (traceback). Есть более полезная информация. Какая линия делает проблему? – furas

+0

сначала вам нужно '()' в 'close()', чтобы закрыть его. Во-вторых: вы не можете снова использовать закрытый сокет - вам нужно создать новый сокет. BTW: вы можете использовать одно и то же соединение с 'send()' data на сервере и 'recv()' данные с сервера - если вы только меняете сервер. – furas

ответ

0

Кажется, вы написали смешанный код сервера и клиента Вот простой образец кодов для сокета программирования первых на стороне сервера, а второй на клиенте

Server side code:

# server.py 
import socket           
import time 

# create a socket object 
serversocket = socket.socket(
      socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name 
host = socket.gethostname()       

port = 9999           

# bind to the port 
serversocket.bind((host, port))         

# queue up to 5 requests 
serversocket.listen(5)           

while True: 
    # establish a connection 
    clientsocket,addr = serversocket.accept()  

    print("Got a connection from %s" % str(addr)) 
    currentTime = time.ctime(time.time()) + "\r\n" 
    clientsocket.send(currentTime.encode('ascii')) 
    clientsocket.close() 

and now the client

# client.py 
import socket 

# create a socket object 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

# get local machine name 
host = socket.gethostname()       

port = 9999 

# connection to hostname on the port. 
s.connect((host, port))        

# Receive no more than 1024 bytes 
tm = s.recv(1024)          

s.close() 

print("The time got from the server is %s" % tm.decode('ascii')) 

сервер просто остался слушал для любого клиента, и когда он обнаруживает новое соединение, которое возвращает текущее время и время закрытия клиентского соединения.

Смежные вопросы