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()

 

 

 

 

 

 

 

 

 

  • 4
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 使用 Pythonsocket 模块可以实现局域网内的通信。 下面是一个简单的示例代码: 服务端: ```python import socket HOST = '' PORT = 5000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) conn, addr = s.accept() print('Connected by', addr) while True: data = conn.recv(1024) if not data: break conn.sendall(data) conn.close() ``` 客户端: ```python import socket HOST = 'localhost' PORT = 5000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) s.sendall(b'Hello, world') data = s.recv(1024) print('Received', repr(data)) s.close() ``` 在以上代码中,服务端监听本地地址和端口,并且接收客户端的连接请求。客户端连接服务端后,发送数据并接收服务端返回的数据。可以根据自己的需求修改代码。 ### 回答2: Python中的socket编程可以用于在局域网中实现网络通信。使用socket库可以在python程序中创建客户端和服务器端,使它们可以通过socket连接进行通信。 首先,服务器端需要创建一个socket对象并将其绑定到IP地址和端口号上。之后,服务器端可以使用socket对象的listen()方法来监听客户端的连接请求。一旦有客户端请求连接,服务器端可以使用socket对象的accept()方法来接受连接,并创建一个新的socket对象,用于与客户端进行通信。服务器端可以使用这个新的socket对象的send()和recv()方法来发送和接收数据。 客户端需要创建一个socket对象并将其连接到服务器的IP地址和端口号上。之后,客户端可以使用socket对象的send()和recv()方法来发送和接收数据。 在实际应用中,可以使用Pythonsocket库配合其他网络协议(如TCP或UDP)来实现各种功能,例如创建一个简单的聊天程序、传输文件等。 总结起来,Pythonsocket编程可以让程序在局域网中实现网络通信,通过创建socket对象来创建客户端和服务器端,并使用socket对象的方法来进行数据传输。 ### 回答3: PythonSocket模块是用来实现网络通信的一种机制,可以用于在局域网内进行网络通信。使用Socket模块,我们可以创建一个服务器端和一个或多个客户端,它们之间可以进行双向数据交换。 在局域网中进行Socket通信时,服务器端首先通过指定一个IP地址和端口号来创建一个服务器Socket对象。然后,通过调用对象的bind()方法将服务器Socket对象与指定的IP地址和端口号绑定在一起。接着,服务器Socket对象通过调用listen()方法开始监听来自客户端的连接请求。 客户端通过创建一个客户端Socket对象,并指定连接的服务器的IP地址和端口号来连接到服务器端。客户端Socket对象通过调用connect()方法来与服务器Socket对象进行连接。 一旦服务器端和客户端建立连接,它们可以通过调用send()和recv()方法来进行数据的发送和接收。服务器可以通过调用accept()方法接受客户端的连接请求,并通过调用send()方法向客户端发送数据。客户端可以通过调用recv()方法接收服务器端发送过来的数据。 在局域网内进行Socket通信可以方便地实现多台计算机之间的数据交换,例如可以通过局域网socket不同计算机之间进行文件传输、网络聊天等。使用PythonSocket模块,我们可以简单快速地实现局域网内的网络通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值