我最近开始用python学习socket编程。从同一台计算机上最基本的服务器和客户端脚本开始,我编写了以下代码。
import socket
import time
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 9999
serversocket.bind((host,port))
serversocket.listen(5)
while True:
clientsocket, addr = serversocket.accept()
print("Got a connection from %s" %str(addr))
currentTime = time.ctime(time.time()) + "\r\n"
clientsocket.send(currentTime.encode('ascii'))
clientsocket.close()
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = socket.gethostname()
port = 9999
s.connect((host,port))
tm = s.recv(1024)
s.close()
print("The time got from the server is %s" %tm.decode('ascii'))
我正在使用spyder IDE。每当我在IPython控制台中运行客户端时,这就是我得到的: " ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝它。"
每当我运行服务器时,我都会得到一个无休止的过程。
那么,我应该怎样做才能使这项工作?
感谢您的帮助!
致谢: - http://www.bogotobogo.com/python/python_network_programming_server_client.php
答案 0 :(得分:3)
尝试将socket.gethostname()
更改为socket.gethostbyname(socket.gethostname())
。 gethostbyname
返回主机名的ip。您想设置一个套接字以连接到IP,端口。或者,由于您在本地运行所有内容,因此只需将host
直接设置为"127.0.0.1"
,即可为客户端/服务器设置。