04、处于不同局域网下的Socket通信(Python代码简单实例)

学习网站来源:python之socket编程


本次Python实现不同局域网下的socket通讯是在完成前面博客内容配置的前提下的

socket的python接口函数在前面的博客中也有笔记

这个例程主要完成的功能是:

简而言之:一台机器采集数据,将数据发送给另外一台机器,另外一台机器根据收到的数据进行分析匹配,返回一个指令,从而实现智能互联的目的

 

service端:

"""
file:01_A_higher_com_service(can_send_cmd).py
socket service
"""

import socket
import sys

def socket_service():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        # 防止socket server重启后端口被占用(socket.error: [Errno 98] Address already in use)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.bind(('127.0.0.1', 22))
        s.listen(10)
    except socket.error as msg:
        print(msg)
        sys.exit(1)
    print('Waiting connection...')

    while True:
        conn, address = s.accept()
        print('Accept new connection from {0}'.format(address))
        conn.send(('Hi, Welcome to the server!').encode())#encode是编码函数
        while True:
            data = conn.recv(1024)
            print('{0} client send data is >>>{1}'.format(address,data.decode()))
            if int(data.decode()) > 100:
                conn.send(('---> open door!').encode())#cmd1
            if int(data.decode()) <= 100:
                conn.send(('---> close door!').encode())#cmd2
            if data == 'exit' or not data:
                break
        conn.close()

if __name__ == '__main__':
    socket_service()

client端:

"""
file:01_A_simple_com_client.py
socket client
"""

import socket
import sys

def socket_client():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(('x.x.x.x', 6000))#这里填写的是你自己服务器的公网IP地址,6000是远程访问的端口号

    except socket.error as msg:
        print(msg)
        sys.exit(1)
    print(s.recv(1024))  # 目的在于接受:Accept new connection from (...
    while 1:
        data = input('Please input : ').encode()
        s.send(data)
        receive_cmd = s.recv(1024)
        print('receive:', receive_cmd)
        if data == 'exit':
            break
    s.close()

if __name__ == '__main__':
    socket_client()

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值