【发布时间】:2015-08-08 15:04:41
【问题描述】:
我让我的 Windows 计算机连接到我的 linux python 服务器。
该服务器非常适合 linux 用户,但我希望它也可以在 Windows 上运行。我做了一些研究,发现 Windows 上的 select.select() 函数可以在没有 stdin 管道的情况下工作,但是当我这样做时,它不会向服务器发送任何数据,只会接收。
代码:
__author__ = 'root'
import socket
import datetime
import getpass # Get username
import sys
import threading
import thread
import select
def client():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
address = "192.168.1.17"
sock.bind((str("192.168.1.231"), int(2222)))
sock.connect(("192.168.1.17", int(23657)))
sock.setblocking(0)
sock.send(getpass.getuser()+"[$ID$]zivofek")
socket_list = [sys.stdin, sock]
partner = raw_input("Chat partner: ")
while 1:
try:
message = raw_input()
sock.sendall(message)
data = sock.recv(1024)
print data
except:
continue
def get_time():
return datetime.datetime.strftime(datetime.datetime.now(), '%H:%M:%S')
def main():
client()
if __name__ == "__main__":
main()
知道如何在 Windows 中同时接收和发送吗?
【问题讨论】:
-
select本身不会发送任何内容。你的意思是你没有得到“写”事件?同样,发布出现问题的代码是最好的选择。 -
实际上-我在 Windows 中没有客户端代码。我基本上想让客户端能够以任何方式接收和发送到服务器。在 python 中,它使用简单的选择——可写时写入,可读时读取。我正在寻找一种在 Windows 中实现它的方法,到目前为止,我一次只能做一个,而不是两个。
-
试过python
socket.sendall()函数? -
老实说我没有,现在尝试-引发错误:无法立即完成非阻塞套接字操作。你介意举个例子吗?非常感谢您的帮助!
-
您介意展示您的代码吗?我们这里不是免费的导师,你应该做你自己的工作:)
标签: python linux windows sockets