视窗7错误Socket.Errno:[107]的传输端点未连接

问题描述 投票:0回答:1

我有Ubuntu的LTS 16.04上的Windows 7的服务器计算机上托管的虚拟框运行。我运行需要两个不同的软件(OpenFOAM和PFC3D)之间耦合的耦合的模拟。这里是我的客户端和服务器的代码:

客户:

from itasca import p2pLinkClient
import numpy as np
from pyDemFoam import pyDemIcoFoam

solver = pyDemIcoFoam()

with p2pLinkClient() as pfc_link:
    pfc_link.connect("10.0.2.2")

    pfc_link.send_data(solver.nodes())
    pfc_link.send_data(solver.elements())
    pfc_link.send_data(solver.rho())
    pfc_link.send_data(solver.mu())

    while True:
        print "waiting for run time"
        deltat = pfc_link.read_data()
        if deltat == 0.0:
            print "solve finished"
            break
        print "got run time", deltat
        solver.n(pfc_link.read_data())
        solver.f(pfc_link.read_data())
        print "got runtime and data"

        solver.set_dt(deltat)
        solver.solve(deltat)

        print "sending data to pfc"
        pfc_link.send_data(solver.p()*solver.rho())
        pfc_link.send_data(solver.gradp()*solver.rho())
        pfc_link.send_data(solver.U())
        print "send finished"

服务器:

import itasca as it
from itasca import cfdarray as ca
from itasca.util import p2pLinkServer

import numpy as np

with p2pLinkServer() as cfd_link:
    cfd_link.start()

    nodes = cfd_link.read_data()
    elements = cfd_link.read_data()
    fluid_density = cfd_link.read_data()
    fluid_viscosity = cfd_link.read_data()
    print fluid_density, fluid_viscosity
    nmin, nmax = np.amin(nodes,axis=0), np.amax(nodes,axis=0)
    diag = np.linalg.norm(nmin-nmax)
    dmin, dmax = nmin -0.1*diag, nmax+0.1*diag
    print dmin, dmax

    it.command("""
    new
    domain extent {} {} {} {} {} {}
    """.format(dmin[0], dmax[0],
               dmin[1], dmax[1],
               dmin[2], dmax[2]))
    ca.create_mesh(nodes, elements)
    it.command("""
    config cfd
    set timestep max 1e-5
    element cfd ini density {}
    element cfd ini visc {}
    cfd porosity poly
    cfd buoy on
    ball create rad 0.005 x 0.5 y 0.5 z 0.5
    ball ini dens 2500
    ball prop kn 1e2 ks 1e2 fric 0.25
    set gravity 0 0 -9.81
    def fluid_time
      global fluid_time = mech.age
    end
    ball history id 1 zvelocity id 1
    history add id 2 fish @fluid_time
    plot clear
    plot add hist 1 vs 2
    plot add cfdelement shape arrow colorby vectorattribute "velocity"
    """.format(fluid_density, fluid_viscosity))

    element_volume = ca.volume()
    dt = 0.005

    for i in range(100):
        it.command("solve age {}".format(it.mech_age()+dt))
        print "sending solve time"
        cfd_link.send_data(dt) # solve interval
        cfd_link.send_data(ca.porosity())
        cfd_link.send_data((ca.drag().T/element_volume).T/fluid_density)
        print " cfd solve started"
        ca.set_pressure(cfd_link.read_data())
        ca.set_pressure_gradient(cfd_link.read_data())
        ca.set_velocity(cfd_link.read_data())
        print " cfd solve ended"

    cfd_link.send_data(0.0) # solve interval


    print "ball z velocity", it.ball.find(1).vel_z()

我跑进错误:Socket.Errno:[107]的Trasnport终点未连接,当我开始所耦合的计算。这个问题被张贴,并解决了MAC操作系统,但没有窗户。我试过MAC解决方案,但它并没有帮助。任何人都可以请帮助呢?

python sockets
1个回答
-1
投票

在Python代码客户端,IP地址是不允许进行连接。我曾尝试相同的例子,但在主机的Ubuntu,游客窗口组合。通过VirtualBox的创建静态IP我解决了这个问题。使用在pfc_link.connect("Static Ip of VBox")上的代码客户端。

© www.soinside.com 2019 - 2024. All rights reserved.