为什么这不能将我连接到我的服务器?
Why does this not connect me to my server?
我正在尝试建立与 server.py 的连接,但 client.py 输出此错误
Traceback (most recent call last):
File "C:\Users\Nathan\Desktop\Coding\Langs\Python\Projects\Chatting Program\Client.py", line 15, in <module>
clientsocket.connect((host, port)) # Connects to the server
TypeError: an integer is required (got type str)
这是我的代码...
## CLIENT.PY
from socket import *
import socket
host = input("Host: ")
port = input("Port: ")
#int(port)
username = input("Username: ")
username = "<" + username + ">"
print(f"Connecting under nick \"{username}\"")
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Creates socket
clientsocket.connect((host, port)) # Connects to the server
while True:
Csend = input("<MSG> ") # Input message
Csend = f"{username} {Csend}" # Add username to message
clientsocket.send(Csend) # Send message to ONLY the server
如果我的 server.py 有问题,那么这里是
的代码
## SERVER.PY
from socket import *
import socket
import select
host_name = socket.gethostname()
HOST = socket.gethostbyname(host_name)
PORT = 12345
print(f"Server Info\nHOST: {HOST}\nPORT: {PORT}")
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((HOST, PORT))
serversocket.listen(5)
clientsocket, address = serversocket.accept()
print(address)
with clientsocket:
while True:
Srecv = clientsocket.recv(1024)
print(f"{username} - {address}: {Srecv}")
# Add server time to message before sending
clientsocket.sendall(Srecv)
我试过将主机和端口转换为str、int和float,但只能成功转换为str。任何帮助将不胜感激。提前致谢!
编译错误相当正常:input() returns 端口号的字符串,而您的函数需要一个整数。您可以通过将端口转换为整数来解决这个问题 - 您的评论很接近:
port = int(port).
如果您查看 python 文档,input() 总是 returns 一个字符串。传递给 clientsocket.connect() 的元组中的第二个值必须是整数,但是,您传递的是字符串值。您必须首先使用以下代码转换您的端口:
port = int(port).
#OR
port = int(input("Port: "))
经常查看文档!
我正在尝试建立与 server.py 的连接,但 client.py 输出此错误
Traceback (most recent call last):
File "C:\Users\Nathan\Desktop\Coding\Langs\Python\Projects\Chatting Program\Client.py", line 15, in <module>
clientsocket.connect((host, port)) # Connects to the server
TypeError: an integer is required (got type str)
这是我的代码...
## CLIENT.PY
from socket import *
import socket
host = input("Host: ")
port = input("Port: ")
#int(port)
username = input("Username: ")
username = "<" + username + ">"
print(f"Connecting under nick \"{username}\"")
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Creates socket
clientsocket.connect((host, port)) # Connects to the server
while True:
Csend = input("<MSG> ") # Input message
Csend = f"{username} {Csend}" # Add username to message
clientsocket.send(Csend) # Send message to ONLY the server
如果我的 server.py 有问题,那么这里是
的代码## SERVER.PY
from socket import *
import socket
import select
host_name = socket.gethostname()
HOST = socket.gethostbyname(host_name)
PORT = 12345
print(f"Server Info\nHOST: {HOST}\nPORT: {PORT}")
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind((HOST, PORT))
serversocket.listen(5)
clientsocket, address = serversocket.accept()
print(address)
with clientsocket:
while True:
Srecv = clientsocket.recv(1024)
print(f"{username} - {address}: {Srecv}")
# Add server time to message before sending
clientsocket.sendall(Srecv)
我试过将主机和端口转换为str、int和float,但只能成功转换为str。任何帮助将不胜感激。提前致谢!
编译错误相当正常:input() returns 端口号的字符串,而您的函数需要一个整数。您可以通过将端口转换为整数来解决这个问题 - 您的评论很接近:
port = int(port).
如果您查看 python 文档,input() 总是 returns 一个字符串。传递给 clientsocket.connect() 的元组中的第二个值必须是整数,但是,您传递的是字符串值。您必须首先使用以下代码转换您的端口:
port = int(port).
#OR
port = int(input("Port: "))
经常查看文档!