我有两台电脑,都连接到互联网。我想在它们之间传输一些基本数据(字符串,整数,浮点数)。我是网络新手,所以我正在寻找最简单的方法。我会在做什么模块来做这件事?
两个系统都将运行Windows 7。
答案 0 :(得分:5)
只要不是异步(一次发送和接收),您就可以使用the socket interface。
如果你喜欢抽象(或需要异步支持),总会有Twisted.
以下是套接字接口的示例(随着程序变大,将变得更难使用,因此,我建议使用Twisted或asyncore)
import socket
def mysend(sock, msg):
totalsent = 0
while totalsent < MSGLEN:
sent = sock.send(msg[totalsent:])
if sent == 0:
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("where ever you have your other computer", "port number"))
i = 2
mysend(s, str(i))
python文档非常好,我从那里获取了mysend()函数。
如果您正在进行与计算相关的工作,请查看XML-RPC,哪个python已经为您准备好了。
请记住,套接字就像文件一样,所以编写代码并没有太大的不同,因此,只要你能做基本的文件io,并了解事件,套接字编程就不那么难了(只要你不像复用VoIP流那么复杂......)
答案 1 :(得分:1)
如果你完全不知道什么是套接字,那么使用Twisted可能有点困难。而且,由于您需要确定所传输数据的类型,因此事情会变得更加困难。
因此,ICE, the Internet Communication Engine的python版本可能更适合,因为它隐藏了许多网络编程的脏细节。看一下hello world,看看它是否能奏效。
答案 2 :(得分:0)
看这里: 如果您,我认为您正在尝试使用套接字,那么您正在寻找:https://docs.python.org/2/howto/sockets.html
我希望这会有所帮助,因为它对我有用。 或添加此类以进行持续连接:
class mysocket:
'''demonstration class only
- coded for clarity, not efficiency
'''
def __init__(self, sock=None):
if sock is None:
self.sock = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
else:
self.sock = sock
def connect(self, host, port):
self.sock.connect((host, port))
def mysend(self, msg):
totalsent = 0
while totalsent < MSGLEN:
sent = self.sock.send(msg[totalsent:])
if sent == 0:
raise RuntimeError("socket connection broken")
totalsent = totalsent + sent
def myreceive(self):
chunks = []
bytes_recd = 0
while bytes_recd < MSGLEN:
chunk = self.sock.recv(min(MSGLEN - bytes_recd, 2048))
if chunk == '':
raise RuntimeError("socket connection broken")
chunks.append(chunk)
bytes_recd = bytes_recd + len(chunk)
return ''.join(chunks)