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

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协议简单通信实例_第1张图片

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

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

你可能感兴趣的:(socket,python,网络编程)