datarcv,addr = UDPSerSocket.recvfrom(BUFUSIZE) error: [Errno 10022]

在編程的時候,想將客戶端代碼發送給服務端,服務端再發送一段代碼給另外一個客戶端

在改動客戶端的時候出現了上述錯誤,解決方案如下:

客戶端代碼:

import socket
HOST = '192.168.1.101'
PORT = 8803
ADDR = (HOST,PORT)
BUFUSIZE = 1024

UDPSerSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  # 創建套接字
UDPSerSocket.bind(ADDR)
while True:
    '''
    data = raw_input('>')   # 輸入參數
    if not data:
        break
    print 'The sending data is ',data
    UDPSerSocket.sendto(data,ADDR)  # 發送到特定的地址
    '''
    datarcv,addr = UDPSerSocket.recvfrom(BUFUSIZE)
    if not datarcv:
        break
    print 'The recive data is ',datarcv


服務端代碼:

# coding=utf-8

import socket
import time
HOST = '192.168.1.101'  # 主機,因爲是本機所以是localhost,或者127.0.0.1也可以
BUFFSIZE = 1024  # 每次讀取數據的緩存區大小
PORT = 8802  # 端口,也就是客戶端要連接的端口
ADDR = (HOST, PORT)  # 將主機地址和端口組成一個tuple形式的地址

UDPSerSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDPSerSocket.bind(ADDR)
ADDR1 = (HOST, PORT+1)
print('waiting for connect...')
while True:
    data,addr = UDPSerSocket.recvfrom(BUFFSIZE)
    print 'Received',data,'from',addr,'in [%s]'%time.ctime()
    UDPSerSocket.sendto('[%s]:%s'%(time.ctime(),data),ADDR1)
解決方案:就是在客戶端加一個

UDPSerSocket.bind(ADDR)
由於變成了服務端,需要改變相應端口


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章