Android-разъем для мобильных телефонов открыт - PullRequest
0 голосов
/ 18 мая 2011

Почему Socket можно открыть на эмуляторе Android и подключить к коду Python Server и открыть сокет !! С другой стороны, когда я запускаю тот же код Android на мобильном телефоне, он не запускается. не открыл сокет .. Любое предложение в чем проблема и как решить такую ​​вещь

enter code here
import sys
from threading import Thread
import socket
import MySQLdb

allClients=[]

 class Client(Thread):

def __init__(self,clientSocket):
            Thread.__init__(self)
            self.sockfd = clientSocket #socket client
            self.name = ""
            self.nickName = ""

def newClientConnect(self):

  allClients.append(self.sockfd)
  while True:


        while True:

            try:
                 rm= self.sockfd.recv(2048)
                 print rm
                 i=0

                 while (i<2):

                    if   (rm) == row[i][0]:                   
                        reply="\n Welcome to our game %s: %s"%(rm,row[i][1])
                        self.sockfd.send(reply)
                        break

                    else:

                        i=i+1
                    if i==2:
                        reply="\n Error opaa ba2a"
                        self.sockfd.send(reply)
                        i=0
                        break
                 break

            except ValueError:
                   self.sockfd.send("\n UNVAlied Comment ")


def run(self):
            self.newClientConnect()
            while True:
                    buff = self.sockfd.recv(2048)
                    if buff.strip() == 'quit':
                         self.sockfd.close()
                         break # Exit when break
                    else:
                         self.sendAll(buff)
                   #Main
            if __name__ == "__main__":

          #Server Connection to socket:
             IP = '50.0.10.107'
          PORT = 5807
         serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        serversocket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1 )
            print ("Server Started")
        try:
    serversocket.bind(('',54633))
except ValueError,e:
    print e
serversocket.listen(5)


db= MySQLdb.connect(host= "localhost",
              user="root",
              passwd="newpassword",
              db="new_schema")


     x=db.cursor()
     x.execute("SELECT *  FROM lolo")
      row = x.fetchall()


        print "Connected to the Database"


        while True:
    (clientSocket, address) = serversocket.accept()
    print 'New connection from ', address
    ct = Client(clientSocket)
    ct.start()




    __all__ = ['allClients','Client']

Код Python и код сервера, который он отображает, и кнопка при нажатии на кнопку запуска соединения, и она прекрасно работает на эмуляторе

Ответы [ 2 ]

3 голосов
/ 24 сентября 2012

Может быть несколько вещей:

  1. У вас не включены сетевые разрешения в файле манифеста
  2. Ваш Wi-Fi / 3G отключен
  3. Если ваш сервер находится на вашем персональном компьютере, и вы подключены к Интернету с помощью маршрутизатора, вам нужно перенаправить порт, который вы используете для связи через сокет, от маршрутизатора к вашей машине.
0 голосов
/ 18 мая 2011

Если ваш код работает на эмуляторе, но не на реальном телефоне, это может быть проблемой сети. Эмулятор зависит от локальной сети для доступа к вашему серверу и доступа к телефону через сеть 3G. Ваш сервер доступен через интернет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...