簡體   English   中英

Python套接字連接示例

[英]Python socket connection example

我正在編寫一個簡單的套接字程序,但收到以下錯誤-

Traceback (most recent call last):
  File "C:\Users\ANAND\workspace\Python_Scratch\Scratch\sockettest.py", line 16, in <module>
    print('Received message == ',s.recv(50))
socket.error: [Errno 10057] A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied

socketserver.py

import socket

s = socket.socket()

host = socket.gethostname()

port = 1234

s.bind((host, port))

s.listen(5)

while True:
    c, addr = s.accept()
    print('Got connection from', addr)
    print('Received message == ',s.recv(50))
    c.send('Thank you for connecting')
    c.close()

socketclient.py

import socket
from time import sleep
s = socket.socket()

host = socket.gethostname()

port = 1234

s.connect((host, port))

sleep(10)
s.sendall("Hello!! How are you")
print(s.recv(1024))

在socketserver.py中,使用c.recv而不是s.recv 從連接中接收字節

print('Received message == ', c.recv(50))

另請注意,只能通過套接字發送字節。 因此,如果您使用的是Python3,請確保發送bytes而不是str s:

c.send(b'Thank you for connecting')
s.sendall(b"Hello!! How are you")

import multiprocessing as mp
import socket
import time

def basic():
    sproc = mp.Process(target=server)
    sproc.daemon = True
    sproc.start()
    time.sleep(.5)
    client()
    sproc.join()

def server():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    host = socket.gethostname()
    port = 1234
    s.bind((host, port))
    s.listen(5)
    c, addr = s.accept()
    print('Got connection from {}'.format(addr))
    print('Received message == {}'.format(c.recv(50).decode('ascii')))
    c.send(b'Thank you for connecting')
    c.close()

def client():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    host = socket.gethostname()
    port = 1234
    s.connect((host, port))
    time.sleep(1)
    s.sendall(b"Hello!! How are you")
    print(s.recv(1024).decode('ascii'))
    s.close()

basic()

產量

Got connection from ('127.0.0.1', 48158)
Received message == Hello!! How are you
Thank you for connecting

暫無
暫無

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

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