我有一个python聊天程序server.py和client.py。它可以在我的本地系统中运行,但是当我尝试连接到koding.com ubuntu-vm或cloud9 ubuntu-vm这样的远程主机时,它无效。
我无法通过网络访问远程客户端。
这link表明了我的一些问题。
我的目标是使用互联网而不是局域网进行聊天
这是聊天服务器.py
import socket
import thread
HOST = ''
PORT = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
while True:
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if data[:4] == "exit":
print 'Parted by', addr
else:
conn.send(data),
if not data:
break
print data
conn.close
这是聊天client.py
import socket
getHOST = (raw_input('Enter the Host: '))
print getHOST
HOST = getHOST
PORT = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
NICK = raw_input('Welcome, Enter your name: ')
while True:
MSG = raw_input('>> ')
MSG = NICK + ': ' + MSG
if MSG[5:] == "exit":
break
s.send(MSG)
data = s.recv(1024)
print data
s.close()
答案 0 :(得分:4)
您的server.py
甚至不应该在本地工作,因为它包含错误。
s.listen(1)
一次,而不是无限循环。我建议您更改server.py
,如下所示:
import socket
import thread
def handleChat(conn, addr):
print 'Connected by', addr
while 1:
data = conn.recv(1024)
if data[:4] == "exit":
print 'Parted by', addr
else:
conn.send(data),
if not data:
break
print data
conn.close
def main():
HOST = ''
PORT = 4444
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
while True:
conn, addr = s.accept()
thread.start_new_thread(handleChat, (conn, addr,))
if __name__ == "__main__":
main()
然后将它放在您的服务器上,说example.com
,然后运行它。它应该现在可以正常工作,正如我测试过的那样。