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

Reply via email to