Python网络编程-主机-虚拟机之间TCP协议简单通信实例

本文介绍了使用Python的socket模块进行TCP协议的网络编程。内容包括服务器端和客户端的实现,强调了在同一主机和不同主机间的配置区别。通过实际测试,在Windows作为服务器、Linux作为客户端的情况下能够成功通信,并能通过wireshark捕获数据包。

python 中的网络编程主要用到socket模块,模块中的socket()函数被用来创建套接字。
在同一台主机上运行,只要IP地址都为127.0.0.1(localhost)即可,但在不同主机间,需要修改IP.
本例子参考《python核心编程第二版》例题。

tcp服务器端

#!/usr/bin/env python

from socket import *
from time import ctime

HOST = 'A'                        #主机(服务器)地址
PORT = 20000
BUFSIZE = 1024
ADDR = (HOST,PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)  # 创建套接字
tcpSerSock.bind(ADDR)                      # 监听
tcpSerSock.listen(5)

while True:
    
### 虚拟机环境下的网络编程项目 在网络编程领域,在虚拟机环境中开展工作具有诸多优势,比如隔离性灵活性。为了确保良好的性能表现以及顺利实现网络编程目标,选择合适的虚拟机软件配置至关重要[^1]。 #### 配置虚拟机以支持网络编程 当利用Windows 11自带的虚拟机进行此类活动时,除了基本设置外还需要特别关注网络适配器的选择与配置。这通常涉及到桥接模式、NAT模式或者仅主机模式的选择,具体取决于实际需求[^2]。 #### 实现简单TCP服务器客户端通信模型 下面给出一段Python代码作为实例演示如何创建一个简易版TCP服务器端与客户端之间的消息传递机制: ```python import socket def tcp_server(): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) host = '0.0.0.0' port = 12345 server_socket.bind((host, port)) server_socket.listen(5) while True: client_socket, addr = server_socket.accept() print(f'Connection from {addr}') message = client_socket.recv(1024).decode('utf-8') print(f'Received Message: {message}') response = f'ECHO: {message}' client_socket.send(response.encode('utf-8')) client_socket.close() if __name__ == '__main__': tcp_server() ``` 这段代码展示了怎样构建一个监听特定IP地址及端口等待连接请求并回显收到的信息给发送方的服务端应用。 对于客户端部分,则可以通过如下方式建立连接并向服务端发送数据: ```python import socket def tcp_client(server_ip='localhost', server_port=12345): client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: client_socket.connect((server_ip, server_port)) msg_to_send = input("Enter your message:") client_socket.send(msg_to_send.encode('utf-8')) echo_msg = client_socket.recv(1024).decode('utf-8') print(f'Server Echoed Back:{echo_msg}') finally: client_socket.close() if __name__ == '__main__': tcp_client() ``` 此段脚本实现了向指定的目标发起TCP连接尝试,并输入自定义的消息内容传输至对方;之后接收到来自服务端返回的数据后打印出来完成一次完整的交互过程。 #### 使用Shell脚本辅助管理网络接口状态 在基于Linux系统的虚拟机上操作时,还可以借助于强大的shell工具集来进行更加便捷高效的管理维护作业。例如,通过编写简短实用的小型bash script来查看当前活跃网卡详情或是临时调整某些参数设定等动作均能极大地方便日常运维任务执行[^3]。 ```bash #!/bin/bash # 显示所有可用网络接口及其基本信息 ip link show # 获取默认路由所使用的出口设备名称 DEFAULT_INTERFACE=$(ip route | grep default | awk '{print $5}') echo "Default Network Interface is ${DEFAULT_INTERFACE}" ``` 上述示例说明了如何运用`ip`命令获取有关本地计算机联网状况的知识点,这对于理解所在实验平台内部结构非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值