【问题标题】:Server-Client Errno[10061] VM = server, Hostmachine = Client / UPDATE Errno[10060]服务器-客户端 Errno[10061] VM = 服务器,主机 = 客户端/更新 Errno[10060]
【发布时间】:2017-10-31 03:22:46
【问题描述】:

所以我一直在尝试将消息从我的虚拟机(服务器)传递到我的主机(客户端)我注意到我能够让我的服务器监听我正在监听 IP:127.0 .1.1:端口 1234。

服务器正在运行这段代码,它没有给我任何编译错误 服务器再次在我的虚拟机 (Ubuntu16_04) 上运行。

服务器脚本

import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = socket.gethostbyname(socket.gethostname())
port = 1234
address=(ip,port)
server.bind(address)
server.listen(1)
print "[*] Started listening on ",ip,":",port
client.addr= server.accept()
print "[*] Got a connection from ",addr[0],":",addr[1]
while True:
    data = client.recv(1024)
    print "[*] Received '",data,"' from the client"
    print "     Processing data"
    if(data--"Hello server"):
        client.send("Hello client")
        print " Processing done. \n[*] Reply sent"
    elif(data=="disconnect"):
        client.send("Goodbye")
        client.close()
        break
    else:
        client.send("Invalid data")
        print " Processing done, Invalid data. \n[*] Reply sent"

但是当我尝试通过我的主机连接到服务器时,我收到了这个错误

> >>> import socket
>>> client=socket.socket()
>>> client.connect(('127.0.1.1',1234))

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\PYTHON27\lib\socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10061] No connection could be made because the target machine actively refused it

这是我从 CLIENT

主机上的 windows powershell 收到的错误

我的计算机上的防火墙已完全关闭,我刚刚通过本教程尝试设置静态 ip 以查看是否可以让我的系统进行通信,但没有任何变化

[https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet][1]

我也将它用于端口转发问题,认为这可能与它有关,但仍然没有运气(请注意,我使用确切的静态 IP 地址作为指南,基本上在重新尝试之前逐步完成了这些过程通过套接字连接计算机。)

[https://www.howtogeek.com/122641/how-to-forward-ports-to-a-virtual-machine-and-use-it-as-a-server/][1]

如果有人知道我可以做些什么来让这种该死的连接正常工作,我将不胜感激!

这是我正在使用的代码,它通过 powershell "python 2.7.14" 给我一条错误消息

我尝试了脚本中给出的 IP,我尝试了设置静态 IP 时给出的 IP

最后,我确定在某个时候会要求这样做,所以我会把它放在这里,这基本上是我想要作为服务器的 VM 的 ifconfig

 enp0s3    Link encap:Ethernet  HWaddr 08:00:27:74:4c:f0  
          inet addr:192.168.56.56  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::c378:fdbb:a955:5826/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:49 errors:0 dropped:0 overruns:0 frame:0
          TX packets:134 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5620 (5.6 KB)  TX bytes:14439 (14.4 KB)

enp0s8    Link encap:Ethernet  HWaddr 08:00:27:42:79:85  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:123 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:640 (640.0 B)  TX bytes:20585 (20.5 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:252 errors:0 dropped:0 overruns:0 frame:0
          TX packets:252 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:19341 (19.3 KB)  TX bytes:19341 (19.3 KB)

------------------------------更新---- --------------------------

我已将原始服务器代码修改为不绑定到本地主机(如建议的那样),并尝试通过正确的 IP 连接到服务器,我现在遇到了不同的错误代码,任何关于我的建议可能搞砸了! :)

client.connect(('192.168.56.56',1234))

  File "<stdin>", line 1, in <module>
  File "C:\PYTHON27\lib\socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because
 connected host has failed to respond

【问题讨论】:

  • 127.0.1.1 始终是“此主机”。您需要使用非本地地址(即192.168.56.56
  • 另外,您不希望您的服务器绑定到本地主机,否则外部机器将无法连接。将0.0.0.0 用于“任何主机”。
  • 我继续修改元组,使其具有 '0.0.0.0' 和 ip,并使用 192.168.56.56 进行连接,现在我收到另一个错误 [Errno 10060]

标签: python-2.7 sockets server client ubuntu-16.04


【解决方案1】:

试试这个:

服务器

import socket
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ip = ''
port = 1234
address=(ip,port)
server.bind(address)
server.listen(1)
print "[*] Started listening on ",ip,":",port
n = 0
while n < 1:
    client.addr= server.accept()
    n += 1
    print "[*] Got a connection from ",addr[0],":",addr[1]
    ## stuff

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    相关资源
    最近更新 更多