On 2016-02-11 15:12, Arjun Srivatsa wrote:
Hi guys. I am basically transferring the data from PLC to PC (where the Python
API runs) but I'm unable to insert into MongoDB thereafter. When I run the
Python script on IDLE, the output is
Hello World!
Traceback (most recent call last): File "C:\Users\SRA2LO\Desktop\API.py", line 32, in
<module> s.bind((IP, PORT)) File "C:\Python27\lib\socket.py", line 228, in meth return
getattr(self._sock,name)(*args) error: [Errno 10013] An attempt was made to access a socket in a way
forbidden by its access permissions
and when I change the IP of MongoDB server, it shows
Hello World!
Traceback (most recent call last): File "C:\Users\SRA2LO\Desktop\API.py", line 32, in
<module> s.bind((IP, PORT)) File "C:\Python27\lib\socket.py", line 228, in meth return
getattr(self._sock,name)(*args) error: [Errno 10049] The requested address is not valid in its context.
Could you please help me out? I have disabled the firewall as well.
Here's the API I have written.
#!/usr/bin/python
import socket
import socket
from pymongo import MongoClient
#from eve import Eve
import datetime
# Connection to server (PLC) on port 27017
server = socket.socket()
host = "10.52.124.135" #IP of PLC
port = 27017
BUFFER_SIZE = 1024
###############
server.connect((host, port))
print server.recv(1024)
server.close
#Connection to Client (Mongodb) on port 27017
IP = "127.0.0.1"
PORT = 27017
BUFFER_SIZE = 1024
client = MongoClient('127.0.0.1', 27017)
db = client.test_database
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((IP, PORT))
s.listen(1)
#connections loop
while True:
conn, addr = s.accept()
print 'Connection address:',addr
try:
# read loop
while True:
data = server.recv(BUFFER_SIZE)
if not data: break
conn.sendall(data)
# send to MongoDB
mongodoc = { "data": data, "date" : datetime.datetime.utcnow() }
ABC = db.ABC
ABC_id = ABC.insert_one(mongodoc).inserted_id
finally:
conn.close()
I don't know whether it's relevant, but you didn't close the server
socket. You have "server.close" instead of "server.close()".
Also, the code as posted won't compile because the block after the
"while True:" isn't indented.
--
https://mail.python.org/mailman/listinfo/python-list