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

时间:2021-01-19 23:59:27

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:
print 'wating for connection...'
tcpCliSock,addr = tcpSerSock.accept() #被动接收连接
print '...connected from:',addr

while True:
data = tcpCliSock.recv(BUFSIZE)#接收来自客户端的数据
if data=='exit':
break
print data #输出客户端的数据
sersay=raw_input("what do you want to say")
tcpCliSock.send('%s'% (sersay)) #返回给客户端的数据
tcpCliSock.close()


tcpSvrSock.close()

客户端

#!/usr/bin/env python

from socket import *

HOST = 'A' #IP地址一致,指向服务器地址
PORT = 20000
BUFSIZE = 1024
ADDR = (HOST,PORT)

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)

while True:
data = raw_input('>')
if data=='exit':
break
tcpCliSock.send(data) #发送给服务器的数据
data = tcpCliSock.recv(BUFSIZE) #接收数据
if data=='exit':
break
print data

tcpCliSock.close()

经过测试这是可运行的,win主机为服务器,桥接的linux为客户端。
Python网络编程-主机-虚拟机之间TCP协议简单通信实例

成功通信,wireshark可以抓到互传的数据。
Python网络编程-主机-虚拟机之间TCP协议简单通信实例

特指明本程序需要在命令行模式下运行。在IDE中,不同主机间是无法通信的(但各自可以运行),其在IDE上可行的条件是服务器客户端同时在同一台机器上,且wireshark抓不到通信消息。