Python呼叫遠端Socket介面

2021-08-27 00:25:08 字數 1916 閱讀 2469

web應用通訊通常都喜歡用http介面,但不排除直接socket通訊的情況。

socket除了server端構建麻煩些(需要考慮很多實際情況),對於呼叫者來說構建個client端其實不比http麻煩多少。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# auther: linvo

import socket

class client(object):

"""呼叫遠端socket介面try:

obj = client(host, port)

ret = obj.send(data)

except exception, e:

ret = e"""

def __init__(self, host, port, timeout = 5):

"""鏈結遠端介面服務

"""self.sock = none

try:

socket.setdefaulttimeout(timeout)

self.sock = socket.socket(socket.af_inet, socket.sock_stream)

self.sock.connect((host, port))

except socket.error, e:

raise exception('socket error:' + str(e))

except exception, e:

raise exception('connect error:' + str(e))

def send(self, data):

"""socket通訊

傳送和接收

data: 傳送的資料

ret: 接收的資料

"""ret = none

# 鏈結成功,開始傳輸

if self.sock:

data = str(data)

try:

result = self.sock.sendall(data)

except exception, e:

result = str(e)

if result is not none:

raise exception('send error:' + str(result))

else:

# 接收

ret = ''

try:

while true:

buffer = self.sock.recv(2048)

if buffer:

ret += buffer

else:

break

except exception, e:

raise exception('recv error:' + str(e))

return ret

順便給個簡易的server端,以便測試:

import socket

sock = socket.socket(socket.af_inet, socket.sock_stream)

sock.bind(('localhost', 9801))

sock.listen(5)

while true:

connection, address = sock.accept()

try:

connection.settimeout(5)

buf = connection.recv(2048)

connection.send(buf)

except socket.timeout:

print 'time out'

connection.close()

python實現rpc遠端呼叫

遠端呼叫就是將物件名 函式名 引數等傳遞給遠端伺服器,伺服器將處理結果返回給客戶端。遠端呼叫使得呼叫遠端伺服器的物件 方法的方式就和呼叫本地物件 方法的方式差不多,因為我們通過網路程式設計把這些都隱藏起來了。遠端呼叫是分布式系統的基礎。遠端呼叫一般分為兩種,遠端過程呼叫 rpc 和遠端方法呼叫 rm...

Python 實現遠端方法呼叫

在乙個訊息傳輸層如 sockets multiprocessing connections 或 zeromq 的基礎之上實現乙個簡單的遠端過程呼叫 rpc server.py import pickle from multiprocessing.connection import listener ...

python 實現呼叫遠端介面

在python中我們可以使用requests模組來實現呼叫遠端介面 一 安裝requests模組 pip install requests二 使用requests模組實現get方式呼叫遠端介面 使用get方式呼叫遠端介面主要使用了requests模組的get方法 requests.get get方法...