我正在用python中的socket库进行聊天,它只起到了一半的作用,当您将netcat作为我使用的频道时,我可以发送消息,而另一个终端可以接收消息,但是,当该终端发送消息(键入文本,然后按enter)时,我不会通过python脚本接收消息。所以我用下面的方法进行了原始测试: python外壳:
import socket
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind(("127.0.0.1",8000)
sock.listen(2)
(client, (ip,port))=sock.accept()
终端:
nc 127.0.0.1 8000
这很有效,要在python shell中发送或接收,我只需键入:袜子发送(“消息”)或袜子接收(2012) 这是我的密码:
#!/bin/python
import socket
import subprocess
from subprocess import Popen, PIPE
import time
class color:
r = '\033[31m'
g = '\033[32m'
d = '\033[0m'
b = '\033[94m'
p = '\033[35m'
def clear():
print('\n' * 100)
chat_clients = []
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clear()
def chatting_on_serverr():
(client, (ip, port))=sock.accept()
def chatting_on_server():
message = raw_input("Send Message: ")
client.send(message + '\n')
client.recv(2012)
chatting_on_server()
chatting_on_server()
def make_channel():
print color.b + '[+] '+color.d+'Welcome to the chat server'+color.b+' [+]'
host = raw_input("Channel Name: ")
port = input("Channel Access Key: ")
clear()
print color.p + "[info] "+color.b+"Making %s" % host
time.sleep(1)
sock.bind((host,port))
sock.listen(3)
print color.g + "[+] "+color.d+"Channel Made"+color.g+" [+]"+color.d
print("[info]: Waiting for people to join your channel...")
global chatting_on_serverr
global chatting_on_server
chatting_on_serverr()
clear()
make_channel()
所要做的就是打印.recv函数的输出 x=客户端.recv(2020) 打印(x)
由于网络的限制,我不能在我的机器上复制这个,但是我建议您看看Python聊天客户机和服务器的tutorial。它将解释很多关于套接字和网络的知识。你知道吗
除此之外,您不应该在代码中定义与函数同名的globals。它可能会推翻他们的声明。另一件事是函数内部的函数。你可以这样写函数:
你会得到同样的功能。此外,您还冒着堆栈溢出错误的风险,因为
chatting_on_server
永远调用自己。你知道吗祝你好运!你知道吗
相关问题 更多 >
编程相关推荐