簡體   English   中英

如何使用客戶端套接字作為服務器套接字python

[英]How to use client socket as a server socket python

我喜歡擁有一個端口,該端口首先用於連接到另一台服務器,然后此端口用作一台服務器,另一個客戶端連接到該服務器。

我現在將python socket用於客戶端,現在我想將其用於服務器socket。
我的代碼:

#!/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

我怎樣才能做到這一點。 謝謝您的回答!

不知道您要在這里做什么。 在我看來,您正在同一應用程序中混合使用客戶端和服務器代碼。

作為參考,您可以創建一個簡單的回顯服務器,如下所示:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM