【问题标题】:How to use client socket as a server socket python如何将客户端套接字用作服务器套接字python
【发布时间】:2014-04-22 22:50:49
【问题描述】:

我喜欢有一个端口首先用于连接到另一台服务器,然后此端口用作服务器,其他客户端连接到它。

我将python套接字用于客户端,现在我想将它用于服务器套接字。
我的代码:

#!/usr/bin/python           # This is server.py file
import socket               # Import socket module
s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12349
portt = 12341               # Reserve a port for your service.
s.bind((host, portt))       # Bind to the port

s.connect((host, port))
s.listen(5)                 # Now wait for client connection.
c, addr = s.accept()        # Establish connection with client.
print c
print 'Got connection from', addr
print s.recv(1024)
s.close

输出是

Traceback (most recent call last):
  File "client.py", line 12, in <module>
    s.listen(5)                 # Now wait for client connection.
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 22] Invalid argument

我该怎么做。 谢谢你的回答!

【问题讨论】:

    标签: python sockets networking


    【解决方案1】:

    不确定您要在这里做什么。在我看来,您在同一个应用程序中混合了客户端和服务器代码。

    作为参考,您可以像这样创建一个简单的回显服务器:

    import socket
    
    HOST = ''                
    PORT = 12349     
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((HOST, PORT))
    s.listen(5)
    conn, addr = s.accept()
    print 'Connected by', addr
    while 1:
        data = conn.recv(1024)
        if not data: break
        conn.sendall(data)
    conn.close()
    

    还有一个像这样的简单回显客户端:

    import socket
    
    HOST = 'localhost'
    PORT = 12349              
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.sendall('Hello, world')
    data = s.recv(1024)
    s.close()
    print 'Received', repr(data)
    

    【讨论】:

    • 我喜欢有一个端口首先用于连接到另一台服务器,然后该端口用作服务器,其他客户端连接到它。
    • 在这种情况下,您需要关闭连接并开始监听同一端口。服务器和客户端不能同时使用同一个端口。
    猜你喜欢
    • 2014-11-05
    • 2014-03-10
    • 1970-01-01
    • 2013-11-11
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多