我有一个python套接字服务器正在运行,但是当我尝试通过我的移动应用程序(用kotlin编写)连接时,它不会建立连接,它会给我“IllegalStateException”异常。这里有什么问题? 下面是python代码:
import socket
import threading
import command_handler
PASSWORD = "abcd"
HEADER = 64
PORT = 5050
IP = socket.gethostbyname(socket.gethostname())
ADDR = (IP, PORT)
FORMAT = 'utf-8'
def authenticate(conn):
inPass = recieveMessage(conn)
userID = recieveMessage(conn)
if inPass != PASSWORD:
print("Connection not coming from within the app, closing...")
return False, None
return True, userID
def sendMessage(msg,conn):
message = msg.encode('utf-8')
messageLength = len(message)
sendLength = str(messageLength).encode(FORMAT)
sendLength += b' ' * (HEADER-len(sendLength))
conn.send(sendLength)
conn.send(message)
def recieveMessage(conn):
msgLength = conn.recv(HEADER).decode(FORMAT)
msgLength = int(msgLength)
msg = conn.recv(msgLength).decode(FORMAT)
return msg
def handler(conn,addr):
auth, userID = authenticate(conn)
if not auth:
conn.close()
command = recieveMessage(conn)
command_handler.executeCommand(command, userID, conn)
def start():
print(f"Starting a server on : {IP}:{PORT}")
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(ADDR)
server.listen()
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handler, args=(conn, addr))
thread.start()
这是Kotlin代码:
private fun sendLength(msg: String): String
{
var message = msg
while (message.length < 64)
{
message += " "
}
return message
}
private fun sendMessage(msg: String, user: String, password: String)
{
try {
val client = Socket("127.0.0.1", 5050)
var messageByteArray = msg.toByteArray()
var messageLength = messageByteArray.size
var messageSendLength = sendLength(messageLength.toString())
var userByteArray = user.toByteArray()
var userLength = userByteArray.size
var userSendLength = sendLength(messageLength.toString())
var passwordByteArray = user.toByteArray()
var passwordLength = userByteArray.size
var passwordSendLength = sendLength(messageLength.toString())
Log.d("konekcije", "Sending Message: $msg" + "User: $user" + "Password: $password")
client.getOutputStream().write(messageSendLength.toByteArray())
client.getOutputStream().write(messageByteArray)
client.getOutputStream().write(userSendLength.toByteArray())
client.getOutputStream().write(userByteArray)
client.getOutputStream().write(passwordSendLength.toByteArray())
client.getOutputStream().write(passwordByteArray)
client.close()
}
catch (IllegalStateException: Exception)
{
Log.d("conn", "No connections")
}
}
我做了一些实验,结果似乎失败了 我做错了什么? 先谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐