Python套接字编程 - Server Client基础

时间:2017-07-06 18:14:36

标签: python

我最近开始用python学习socket编程。从同一台计算机上最基本的服务器和客户端脚本开始,我编写了以下代码。

Server.py

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()

Client.py

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

1 个答案:

答案 0 :(得分:3)

尝试将socket.gethostname()更改为socket.gethostbyname(socket.gethostname())gethostbyname返回主机名的ip。您想设置一个套接字以连接到IP,端口。或者,由于您在本地运行所有内容,因此只需将host直接设置为"127.0.0.1",即可为客户端/服务器设置。